How to Change Android Status Bar with any version (No ROOT )

안녕 얘들 아 환영

나는 Fahed Zaman입니다 Android 휴대 전화 또는 태블릿의 상태 표시 줄을 변경하고 싶습니까? 시계의 위치와 배터리 비율을 변경하거나 다른 모양을 갖기를 원할 수도 있습니다 이유가 무엇이든간에 상태 표시 줄을 사용자 정의하는 간단한 방법이 있으며 루트 액세스가 필요하지 않습니다 상태 표시 줄의 색상을 변경하거나 위치를 변경하려는 경우 잠금 장치와 같은 특정 요소 또는 배터리 네트워크와 같은 특정 방법을 변경합니다 또는 Wi-Fi 표시기가 가능한지 살펴 보겠습니다

시작하겠습니다 먼저 Google Play 스토어에서 무료로 다운로드 할 수있는 앱 상태를 다운로드하고 설치합니다 상태를 설치하기 전에 제대로 작동하려면 많은 권한이 필요하다는 것을 알아야하며 예를 들어 알림 배터리에 액세스해야하는 등의 오류없이 작동합니다 및 Wi-Fi 위치 서비스 Alarm ETC 필요한 모든 권한이 앱 설명 페이지에 표시됩니다 앱을 설치 한 후 이러한 권한이 필요한 이유에 대한 설명과 함께 Google Play 스토어에 필요한 모든 권한에 대한 액세스 권한을 부여하면 맞춤 설정 옵션을 모두 맞춤 설정하기 전에 앱의 오른쪽 상단 영역에서 토글을 사용하여 상태 표시 줄을 교체해야합니다

사용 설정되면이 새로운 상태 표시 줄이 표시되며 앱은 4 개의 개별 상태로 나뉩니다 각각의 스크린 또는 패널에는 다양한 예를 들어 사용자 정의 옵션 첫 화면 설정 화면 색상 투명성 애니메이션 알림 등을 사용자 정의 할 수 있습니다 알림 알림의 머리 길이와 표시 방법을 선택할 수 있습니다 왼쪽으로 스 와이프하면 두 번째 화면으로 이동합니다 여기에서 배터리 Wi-Fi 네트워크 시계와 같은 상태 표시 줄의 모든 내용을 사용자 정의 할 수 있습니다 알림, 블루투스 GP 계획 변경 등 기본적으로 상태 표시 줄에 나타나는 거의 모든 항목에 대해 아이콘을 사용자 정의 할 수 있습니다

어떤 경우에는 여러 가지 아이콘 스타일을 선택할 수 있습니다 당신은 그 부분 하나에 충실해야하지만 심지어 그들은 좋은 모습과 대체 상태 표시 줄 이후 전반적인 매력을 확인하십시오 다음 화면에서는 상태 표시 줄의 동작과 개별 응용 프로그램 별 색상을 결정할 수 있습니다 예를 들어 상태 표시 줄을 Google Play 스토어에서 녹색으로 표시되도록 설정할 수 있습니다 빨간색으로 설정하거나 YouTube에서 보이지 않게 설정하십시오 따라서 사용하기 쉽고 다소 우아하고 세련된 상태입니다 처음에는 조금 이상하게 느껴질 수도 있지만, 결국 익숙해 질 것입니다

상태 표시 줄을 사용자 정의 할 수있는 몇 가지 다른 응용 프로그램이 있습니다이 응용 프로그램은 비 루팅 된 사용자에게 가장 적합한 것으로 나타났습니다 그래서 당신이 즐기는 사람들이 좋아하는 버튼을 누르면 더 많은 비디오와 채널을 구독 할 수 있습니다 의견에서 내가 어느 것이 가장 좋아하는지 알려주세요 나는 당신의 의견을 듣고 싶습니다, 그리고보고 너무 많이 주셔서 감사합니다!

How To Send Sms From Your Pc Using Android Messages & How To Use Messages For Web Feature?

안녕하세요 내 채널에 오신 것을 환영합니다

"Teconz" 그래서 구글은 최근에 유용한 안드로이드 메시지 기능을 선보였다 웹을 통해 PC에서 문자 메시지를 보낼 수 있습니다 오늘 내가 할거야 이 안드로이드 메시지 웹 인터페이스를 사용하는 방법을 보여주고 SMS를 보낼 컴퓨터

이 방법은 안드로이드 메시지 응용 프로그램이 필요합니다 그래서 그것을 얻는 방법? 그냥 Google 플레이 스토어를 열고이 검색 창에 섹션에 안드로이드 메시지를 입력 할 수 있습니다 클릭하여 설치할 수 있으며 응용 프로그램 크기는 거의 23 메가 바이트이므로 언젠가는 기다려라 그런 다음 설치를 시작합니다 설치를 시작합니다

프로세스가 완료되면이 애플리케이션을 클릭하여 열 수 있습니다 그런 다음 지침을 클릭하면이 단계를 건너 뛰고 "다음"을 클릭 할 수 있습니다 또한 사용 권한을 요청하기 때문에이 응용 프로그램을 "허용"하려면 클릭 할 수 있습니다 이 응용 프로그램은 모든 연락처에 액세스합니다 마지막으로이 응용 프로그램을 사용할 준비가되었습니다

다음은이 앱을 데스크톱에서 사용하는 방법입니다 이제 Google 크롬을 엽니 다 또는 컴퓨터의 웹 브라우저를 클릭 한 다음 언급 한 항목에 액세스하려면 클릭하십시오 URL이고 URL은 "http://messagesandroid

com"입니다 이 섹션에서는 하나의 QR 코드를 보여줍니다 이제 안드로이드에서 안드로이드 메시지 응용 프로그램을 열 수 있습니다 모바일이 섹션에서 3 개의 점 아이콘을 클릭하면 4 개의 아이콘이 표시됩니다 여기에서 '웹용 메시지'를 선택하고 두 번째 메시지를 선택할 수 있습니다

"QR 코드 스캔"을 선택하고 "허용"을 클릭하면 마침내 내 모바일 카메라가 시작됩니다 QR 코드를 스캔합니다 이제 브라우저를 열고 해당 QR 코드를 android mobile,하지만이 방법을 사용하기 전에 먼저 이 옵션은 "이 컴퓨터 기억하기"를 사용하면 컴퓨터를 예방할 수 있기 때문에 이 컴퓨터에서 자동으로 로그 아웃합니다 이제 QR 코드를 스캔하려고합니다 마침내 여기에서 안드로이드 메시지 웹을 사용할 준비가 된 것을 볼 수 있습니다

이 웹에서 새 메시지를 보내면 "새 대화"를 선택할 수 있습니다 마지막으로 여기에서 볼 수 있습니다 내 연락처가 모두 표시되므로 연락처 번호는 PC 및이 방법으로 메시지를 보낼 수 있습니다 매우 원활하게 작동합니다 시간 소모로 인해, 나는 나의 튜토리얼을 마쳤다

따라서 PC에서 모든 장치로 메시지를 쉽게 보낼 수있는 방법입니다 더 많은 동영상을 보려면 내 채널 "Teconz"를 구독하고 시청 해 주셔서 감사합니다

How to make Android apps using Processing (Tutorial)

Processing을 사용하여 Android 앱을 만들고 싶습니까? 그것을 해보자! TEKGADG, TEK

GADG, TEKGADG! 그래서 당신은 궁금해 할 것입니다, 가공은 무엇이며 왜 우리는 그것을 안드로이드 애플 리케이션을 만드는데 사용합니까? 처리는 오픈 소스 프로그래밍 언어이며, 매우 간단하고 쉽게 선택할 수 있습니다 쪽으로 많은 아티스트가 프로그래밍 스케치 북처럼 그것을 사용하고 멋진 라이브러리가 많습니다 스케치를 많은 플랫폼에 출력 할 수 있습니다

모든 데스크탑 OS, 웹, 그리고 물론, 안드로이드 Android에서 코드 작성하는 방법을 알고 있다고해도 Processing은 유용한 프로토 타입 작성 도구가 될 수 있습니다 여러 플랫폼 시작하려면 Android SDK 도구를 다운로드 한 다음 처리해야합니다 휴대 전화에서 개발자 옵션과 USB 디버깅을 켜야합니다

그렇게하려면 '설정'-> '휴대 전화 정보'로 이동 한 다음 '빌드 번호'를 여러 번 누릅니다 개발자 옵션을 볼 수 있습니다 다시 설정에서 개발자 옵션으로 이동하십시오 USB 디버깅을 켜십시오 이제 Android 용 처리 문제가 있습니다

하지만 간단합니다 그것을 위해 고쳐라 기본적으로 처리중인 JDK 파일을 JDK 파일로 대체해야합니다 귀하의 컴퓨터에 jdk1

70_45를 사용하고 있습니다 이전 버전의을 다운로드해야 할 수도 있습니다 문제가 생기면 JDK OS X에서 문제를 해결하는 방법을 알려 드리겠습니다

단계는 Windows에서와 비슷해야합니다 잘 Mac에서는 처리 응용 프로그램을 찾은 다음 마우스 오른쪽 버튼으로 '패키지 내용 표시'를 클릭하고 그곳에는 Contents -> PlugIns -> JDK 폴더 -> Contents가 있습니다 PC에서는 이러한 폴더가 처리 아래에있는 프로그램 파일에 있어야합니다 그런 다음 컴퓨터에서 JDK 파일을 찾으려면 라이브러리 -> Java -> JavaVirutalMachines -> JDK 폴더 -> 목차

그리고 방금 연 두 폴더 사이에서 파일이 비슷하다는 것을 알 수 있습니다 너 컴퓨터의 내용을 처리 응용 프로그램 폴더로 복사하기 만하면됩니다 과 그게 해결책이야 Android SDK의 경우 방금 다운로드 한 파일의 압축을 풀어야합니다 들어가다 도구가 나타납니다

그 폴더에 들어가면 '안드로이드'가 있습니다 시작해 그것은 터미널에서 무언가를 열 것입니다 SDK 관리자를 여는 데 1 초가 걸립니다 열었 으면 필요한 도구와 Android 2

33 API 10을 다운로드하십시오 Processing은 Android 233을 사용합니다

즉, 233 및 위에서 가공 스케치를 실행할 수 있습니다 이제 모든 것을 설정 했으므로 화면에 서클을 그리기 만하면됩니다 시작하겠습니다

프로세싱 프로그래밍의 구조는 이해하기 쉽습니다 그것은 무효로 시작한다 setup () {}, 그리고 무효 draw () {} '설정'은 처음에 한 번 실행되므로 여기에서 당신은 사물을 초기화합니다 '그리기'는 모든 프레임에서이 경우 초당 30 회 실행되므로 그 곳에서 모든 프레임을 그릴 필요가있는 것들을 호출합니다

이 원을 그리려면 설정에서 크기 (600, 400)를 입력하십시오 그림으로 그려라 타원 (랜덤 (0, 폭), 랜덤 (0, 높이), 100, 100); 그런 다음 왼쪽 상단 모서리에서 실행을 클릭하십시오 내가보고있는 것을보고 있다면, 그것이 작동하고 있다는 것을 의미합니다 '크기'는 창의 크기, 타원 함수에는 기본적으로 네 가지가 있습니다

x 위치, y 위치, 타원의 너비 및 타원의 높이 그래서 지금 x- 위치를 0에서 0으로 랜덤 화하는 것입니다 화면의 너비, 0에서 화면 높이까지 y 위치를 무작위로 추출한 다음 원의 폭과 높이는 100입니다 그리고 이제 우리는 이것을 Android에 넣을 것입니다 그렇게하기 위해, 우리는 한 가지를 바꾸기를 원할 것입니다

휴대 전화에서 앱을 전체 화면으로 실행하려면 '크기'의 숫자를 displayWidth로 변경하고, 및 displayHeight 이 부분을 시작하려면 USB 디버깅이 활성화 된 상태에서 휴대 전화를 연결해야합니다 그런 다음 오른쪽 상단 모서리로 이동하여 Android를 선택한 다음 실행을 클릭합니다 그럼 너는 잠시 기다려야하지만 결국 스케치가 휴대 전화에서 실행됩니다 그리고 첫 번째 Android 앱이 출시되었습니다

그래서 거기에서 프로세싱 참조로 가서 어떤 유형의 스트로크와 드로잉 할 수있는 셰이프 및 드로잉하려는 모든 드로잉에 사용할 수있는 다른 메서드 데모 목적으로 Pong-2D와 3D의 두 가지 버전을 만들었습니다 나는 링크를 넣을거야 설명 영역의 코드에 추가하면 코드가 주석 처리되어 더 나은 결과를 얻을 수 있습니다 당신이 그것을 통해가는 동안 무슨 일이 일어나고 있는지 생각해보십시오 2D 버전의 Pong은 매우 직관적입니다

당신은 다른 것들에 반응하는 공을 가지고 있습니다 손가락으로 플레이어를 제어 할 수 있습니다 적에게 정말 간단한 AI가 있습니다 그리고 나서 Processing 용 Android Ketai 라이브러리를 사용하는 Pong의 3D 버전을 작성했습니다 카메라 제어를위한 가속도계 데이터를 얻습니다

그래서 저는 그것이 재미 있고 모두를위한 교육 이었기를 바랍니다 네가 생각하는 걸 내가 알게 해줘 코멘트 나를 좋아하고 구독 해주세요! 지켜봐 줘서 고마워

Red Mi Xiaomi Poco Launcher | How To Install For Any Android Smartphones ? App Not in Playstore 2018

좋아요, 댓글 달기, 공유하기, 구독하기 좋아요, 댓글 달기, 공유하기, 구독하기 좋아요, 댓글 달기, 공유하기, 구독하기 좋아요, 댓글 달기, 공유하기, 구독하기 좋아요, 댓글 달기, 공유하기, 구독하기 좋아요, 댓글 달기, 공유하기, 구독하기 좋아요, 댓글 달기, 공유하기, 구독하기

How to Camera2 (Android Development Patterns S2 Ep 8)

고양이 팬케이크

팬케이크를 먹는 고양이 만약 어플에 좋은 카메라가 지원되지 않는다면 어떻게 이런 컨텐츠들을 포착할까요? 제 이름은 데이비드 이스트고, Camera2 API는 가장 뛰어난 카메라 어플을 만드는데 필요합니다 잠시 물러서서 안드로이드 카메라API 옵션의 역사를 살펴보겠습니다 사진이나 영상을 찍는 가장 단순한 옵션은 항상 카메라 인텐트였습니다 기본적으로, 귀하가 인텐트를 시작하면 사용자들은 사진을 찍기 위해 자신이 원하는 카메라 어플을 사용하죠

이 것은 이용하기 쉽지만, 사실 실력이 있는 카메라 어플에게는 그렇지 않습니다 카메라 인텐트는 주로 카메라가 주요 기능이 아니라 부가적인 어플에 사용됩니다 카메라 인텐트로는 북실북실한 고양이가 팬케이크 먹는 모습을 못찍죠 그래서 더 나은 API가 필요했습니다 카메라 API는 카메라 인텐트보다 더 많은 것을 조정할 수 있었습니다

카메라 API가 있다면, 원하는데로 카메라 뷰를 설정할 수 있었습니다, 정말 좋았죠 하지만 사진이 발전하면서 부족한 부분들이 발견됐죠, 예를 들어 압축되지 않은 이미지를 포착할 때, 혹은 프리뷰 속도가 초당 1에서 3 프레임인 새로운 하드웨어에서의 실행 등등에 있어서 문제가 있었습니다 고양이를 찍으려면 더 나은 API가 필요하죠 그래서 Camera2를 소개합니다 Camera2 API는 가장 최근에 나온 카메라API로, 가장 크고 가장 뛰어납니다

Camera2 API는 해당 디바이스 카메라의 모든 권한을 귀하에게 부여합니다 그리고 전 API의 모든 문제들도 해결됐죠 더 빠른 간격으로 사진을 찍을 수 있고, 다수의 카메라에서 프리뷰를 볼 수 있으며, 필터효과도 바로 적용할 수 있습니다 하지만, 새롭게 만든 카메라 어플에 적용하기 전에 알아야 할 것들이 있습니다 Camera2 API는 좋은 기능들을 가지고 있지만, 어플 사용자의 디바이스가 지원하지 못 할 수 있습니다

그렇기 때문에, 귀하는 어떤 디바이스가 지원 가능한지 아셔야 합니다 이 정보는 디바이스의 카메라 스펙을 살펴보면 알 수 있습니다 이 스펙은 렌즈의 방향같은 간단한 특징일 수도 있고, 얼굴 인식 모드의 여부처럼 복잡한 것일 수도 있습니다 만약 귀하의 어플이 특정 스펙 없이는 지원이 안된다면, 사용자가 어플을 다운받으려면 해당 스펙이 필요함을 명시하면 됩니다 매니페스트 파일에 사용자의 기능을 설정해놓으면 되죠

한 가지 더 중요한 것은, Camera 2API는 안드로이드 L에서 내놨기 때문에, 모든 어플을 지원하기 위해서는 다시 카메라API를 사용해야 합니다 그리고 Camera2 API는 안드로이드 서포트 라이브러리에서 지원이 아직 안되지만, 이 남성분에게 재촉하면 더 빨리 가능케 할 수 있어요 Camera2 API는 디바이스의 카메라에 대한 귀하의 책임을 증가시킵니다 그리고 더 큰 책임에는 큰 힘이 따라오죠 아마 그럴꺼에요

Camera2 API에 대해서 더 아시려면 API 레퍼런스를 살펴보세요 그리고 실제로 시행된 모델을 확인하고 싶으시면, GitHub에 원시 이미지를 포착하는 샘플 어플이 있습니다 귀하의 어플이 카메라를 사용한다면, Camera2를 사용해 가장 뛰어난 카메라를 제공하세요 계속 좋은 어플을 개발해주세요

How to Use ScrollView in Android App – Android Studio 2.2.2 Tutorial

안녕하세요 다시 오신 걸 환영합니다

다른 안드로이드 스튜디오 튜토리얼 및 오늘 너를 보여줄거야 android studio에서 scrollview를 사용하는 방법 스크롤 뷰는 그것은 귀하의 응용 프로그램을 위에서 아래 또는 아래에서 위로 그래서 당신이 실제로 사용해야하는 곳 스크롤 뷰는 원하는 것으로 가정합니다 여러 항목을 Android 앱에 추가하는 방법 화면이 항목과 일부 항목에 적합하지 않습니다 밖으로 나간 항목 이 경우 화면에 높게 나타나는 스크롤 뷰를 사용할 수 있습니다 여러 개 이상을 추가 할 때 유용합니다

2 개 또는 3 개 이상의 항목을 사용할 수 있습니다 그것을 위에서 아래로 스크롤하고 첫 번째 단계에서 앱의 전체 내용 당신이 할 수있는 일은 scrollview는 텍스트로 이동하는 것입니다 상대 레이아웃 또는 선형 레이아웃 변경 스크롤 뷰에 넣고 그 후에 레이아웃을 scrollview 수 있기 때문에 scrollview 단 하나의 아이를 낳는다는 것을 의미한다 여러 개의 단추를 추가하려는 경우 가능하지 않습니다 당신의 점수에 단일 항목 그래서 그 경우에 당신은 어떻게 사용 하는가? 선형 레이아웃 또는 추가 할 상대 레이아웃 여러 항목이 있으므로 선형 레이아웃을 드래그하면됩니다

scrollview에 그리고 지금 여기에 당신의 선형 레이아웃이고 이제는 가서 단추를 추가하고 확인하십시오 아웃 여기 하단이 태그로가 보겠습니다 ID를 제거하고 복사 만하면됩니다 같은 버튼으로 붙여 넣기보다 당신이 볼 수있는 한 번 그리고 이제는 더 많은 것입니다 지금은 화면에 충분하다

라이브 장치에서 실행하고 화면이 지금 충분한 지 여부 버튼에 맞게 좋아, 이제 내가 응용 프로그램에있어 보시다시피 버튼을 보여줍니다 이제 화면에 완전히 가자 스크롤을 시도합니다 이제 보시다시피 스크롤 할 수 있습니다

위에서 아래로 및 아래에서 위로 이는 이제 우리가 더 많이 추가 할 수 있음을 의미합니다 화면에 맞는 항목보다 나는 네가 그 아이디어가 얼마나 좋은지 희망한다 이 비디오를 좋아하고 내 나중에 안드로이드 업데이 트를위한 채널 이 비디오를 시청 해 주셔서 감사합니다 평화!

How to Add/Install Iphone X Notch in Your Android Smartphone – 2018

이 스마트 폰에서 모든 스마트 폰이 될 수 있습니다 이 노치를 추가 할 수있는 곳 신청이 필요하다

그냥 가게에 가서 수색 그 큰 X 전화 첫 번째 응용 프로그램을 설치 한 후 X 노치 나는 이미 그것을 설치했다 이 응용 프로그램에서 노치를 사용자 정의 할 수 있습니다 여기에서 켜기 만하면됩니다 골짜기 너는 내가 여기이 크기와 너의 크기를 증가시킨 것을 볼 수있을 때마다 여기에서부터 둥근 좌표를 조정할 수있다 모퉁이가왔다 에서 반올림 한 4 개의 모서리와 원하는 모서리 수를 선택할 수 있습니다

좋아요, 그 다음엔 메모 크기를 늘리거나 줄일 수 있습니다 과 그런 다음 메모 색상을 선택할 수 있습니다 이 강도가 바뀌고 색상 모드가 바뀌고 있음을 알 수 있습니다 좋아, 여기에서 색상과 색상을 변경할 수 있습니다 오늘은 그게 전부입니다

당신이 비디오를 즐겼기를 바랍니다 동영상을 즐긴 경우 버튼처럼 누르십시오 채널 구독을 잊지 마세요 보고 주셔서 감사합니다

How I: Use WordPress APIs and Android Volley to build native apps

VEYSEL GUREN : 오늘 저는 당신에게 말할 것입니다 WordPress를 사용하여 기본 응용 프로그램을 만든 방법 REST API 및 Android Volley

Nefisyemektariflericom이 검색되었습니다 전문 모바일 기술 회사의 그들은 우리의 전문적이고 혁신적인 공장 여기서 도전은 그들이 고도로 사용자 정의 된 WordPress 패키지를 사용하여, 네이티브 앱을 만들려면 웹 서비스가 필요합니다 및 네트워킹 시스템 여기 도전은 Nefis Yemek Tarifleri 웹 사이트는 WordPress, 그것은 고도로 맞춤화되었습니다

따라서 WordPress에는 기본 웹 서비스가 없습니다 Android 앱용 시스템 그래서 우리는 WordPress REST API와 Android Volley를 사용했습니다 Android 앱을 만들기위한 사실, WordPress에는 기본 웹 서비스가 없습니다 REST API를위한 시스템 그래서 우리는 REST 서비스를 가능하게하기 위해 WordPress API를 활성화했습니다

실제로 REST API는 JSON으로 데이터를 제공하기 만하고, 우리는이 데이터를 얻고 객체로 해석합니다 이 플러그인은 사용하기 쉬운 REST API를 제공합니다 HTTP를 통해 사용할 수 있습니다 간단한 JSON 형식으로 사이트의 데이터를 수정하십시오 사용자, 게시물, 택 소노 미 등이 포함됩니다

데이터를 검색하거나 업데이트하는 것은 HTTP를 보내는 것처럼 간단합니다 의뢰 우리는 WP API를 웹 서비스 기술로 사용했습니다 웹 사이트에 요청을 보내고 JSON 형식의 응답 Android Volley는 HTTP 라이브러리입니다 이로 인해 네트워킹이 더 쉽고 빠릅니다

발리는 오픈 AOSP 저장소를 통해 사용할 수 있습니다 Volley는 자동 스케줄링 등의 이점을 제공합니다 네트워크 요청, 여러 개의 동시 네트워크 연결, 투명 디스크 및 메모리 응답 캐싱 및 지원 요청 우월성 우리는 네트워킹을 가능하게하기 위해 Volley를 사용했습니다 JSON으로 오는 웹 서비스 응답은 JSON을 사용하여 구문 분석됩니다

코딩 내에서 객체로 사용될 준비가됩니다 발리를 쉽게 삽입 할 수 있으며 고성능을 제공합니다 결론적으로, 우리는 백만 명이 사용합니다 매일 매일 많은 사람들이 무엇을 어떻게 점검하고 있는지 이 안드로이드 애플 리케이션에서 요리 [음악 재생]

How to Kotlin – from the Lead Kotlin Language Designer (Google I/O ’18)

[음악 재생] 제임스 라우 : 고마워요 오늘 아침 여기와 줘서 고마워

제 이름은 James입니다 저는 Google의 Kotlin 팀원입니다 오늘, 나는 매우 기쁜 소식을 전한다 JetBrains의 특별 게스트, 정말로 소개가 필요하지 않습니다 자, 여러분 모두는 코 틀린이 지금 가장 사랑받는 프로그램 중 하나 세계의 언어

Google I / O에서는 Google이 매우 드뭅니다 외부 스피커가 있어야합니다 하지만이 사람은 작년에 여기 있었는데, 우리는 아무도 생각할 수 없기 때문에 그를 초대했습니다 그렇지 않으면 코 틀린을 가르치는 것이 더 낫다 그것을 발명 한 사람들의 리드 언어 디자이너를 환영 해주십시오

코 틀린, 안드레이 브레 슬라브 [박수 갈채] 앤드류 브레 슬라브 : 고마워, 제임스 훌륭한 소개 주셔서 감사합니다 모두들 안녕 나는 너를 여기에서 만나서 매우 기쁩니다

오늘 나는 그것이 무엇이 될 수 있는지 이야기 할 것이다 코 틀린 그리고 저는 실제로 라이브 데모를 할 것입니다 제 데모를 가져 오십시오 슬라이드에이 끔찍한 코드가있는 이유는 우리 모두가 배우고 있고, 우리의 오래된 습관이 때로는 방해가되지

그래서 나는 오늘 어떻게 나가야하는지에 관한 주제를 발표 할 것입니다 귀하의 자바 습관을 배우고 귀하의 코 틀린 습관을 찾으십시오 그래서 우리 모두는 다른 배경에서 왔습니다 그리고 우리 중 많은 사람들이 자바 프로그래밍 언어로 시작했습니다 이를 통해 프로그래밍에 대한 지식을 축적했습니다

그래서 우리는 많은 것을 기억합니다 그리고 그 일은 코 틀린 (Kotlin)이 여러 언어에서 영감을 얻었으며, 자바 프로그래밍 언어도 포함됩니다 따라서 Kotlin에서 많은 Java 구조를 재현 할 수 있습니다 그리고 그것은 효과가있을 것입니다 이런 식으로 일을 할 수 있습니다

그러나 그것은 많은 경우에 극적으로 개선 될 수 있습니다 그래서이 특별한 예제는 클래스 선언에 관한 것입니다 그리고 여기서 내가 왼쪽에 코 틀린 (Kotlin) 수업이 있다는 것을 알 수 있습니다 오른쪽에 Java 클래스가 있습니다 그리고 그들은 매우 비슷해 보입니다

그러나 이것은 분명히 Kotlin 코드를 작성하는 방법이 아닙니다 그래서 당신이 실제로해야 할 일은 무엇입니까? 불필요한 것들을 모두 제거하십시오 여기서 제가 말해야 할 것은 두 가지 속성, 하나의 클래스입니다 그게 맞습니까? 그래서 저는 그것을 손으로 변형 시키려고 노력할 수 있습니다 하지만 실제로 좋은 도구를 과시하고 싶습니다

자바 측에서 코드를 복사하여 붙여 넣기 만하면됩니다 Kotlin 측에, 그래서 그것은 자바를 Kotlin에 사용할 것이다 IDE에 내장 된 변환기를 사용하면됩니다 그래서 붐, 거기있다 실제로 모든 단일 라인 하나의 클래스, 두 개의 속성을 선언하는 데 필요합니다

그게 전부 야 여기에있는 것은 기본 생성자가있는 클래스입니다 그래서 두 개의 매개 변수를 가지며 둘 다 속성입니다 그게 당신이 말하고 싶은 모든 것입니다 그래서 이것은 이것들 중 하나입니다

값싼 선언 클래스가 Kotlin에있는 방법을 보여줍니다 그리고 이것에 결과가 있습니다 이 코드를보십시오 여기서 코드를 작성하는 방법이 분명하지 않습니다 실제로 어떤 언어로든

나는 전체 이름을 이름으로 파싱하고 싶었다 와 성 그리고 그것이 제가 여기서하고있는 일입니다 하지만 결과를 함수에서 제외 시키려면 어떻게 팩하나요? 함수에서 두 가지를 반환하는 방법이 없습니다 나는 하나의 물건을 넣어야한다

그리고 나는 여기에 목록을 남용하고, 어색하게 하나를 꺼내고있다 다른 하나는 이름과 성을 만드는 것입니다 어떤 언어로도 이것을하지 마십시오 그러나 심리적 인 이유가 있습니다 이것을하기 위해서, 적어도 우리의 오래된 습관에서는, 선언 클래스가 비싸니까요, 그렇죠? 새 파일을 만들고 코드를 넣어야합니다

그것은 다소 어색합니다 그러나 Kotlin에서는 이것을 할 필요가 없습니다 말할 필요가있는 것, 수업 시간, 성명, 이름과 성을 속성으로 사용합니다 그리고 나서, 여기서해야 할 일은 단지 그것을 되 찾는 것입니다 그래서 내 이름

여기 간다 이제 지수 대신에 첫 번째와 마지막으로 말할 수 있습니다 이리 그래서 그것이 아이디어입니다 싸구려 클래스가 항상있는 것은 아닙니다

선언 사이트에서 시간을 절약 할 수 있습니다 정신적 노력을 덜어줍니다 여러 수익을 클래스로 나타낼 수 있습니다 그것은 당신에게 아무런 비용도 들지 않습니다 그래서 이걸 실행하면 내 평등이 그게 한 줄짜리 클래스이기 때문에 분명히 작동하지 않습니다

그리고 이제 저는 거기에 동등한 것을 선언하러 갈 것입니다 거기에 해시 코드 등이 있습니다 너무 장황하다 그러나 나는 Kotlin에서 이것을 할 필요가 없다 아마 거기 있다는 것을 알기 때문에 뭔가 데이터 클래스라고합니다

데이터 클래스를 아는 사람은 누구입니까? 많은 사람들, 좋아 그래서 당신은 내가이 키워드 하나를 거기에 넣었다는 것을 알고 있습니다 컴파일러는 나에게 많은 것들을 생성합니다 해시 코드, 문자열에 대한 것, 및 기타 많은 편리한 방법 그게 전부입니다

수업이 얼마나 비싸다는 생각을 바꾸십시오 모든 추상화에서 쉽게 사용할 수 있습니다 그래서 더 많거나 적게 워밍업으로 끝났습니다 다른 것을 보도록하겠습니다 속성

그래서 우리는 수업에 관해 이야기했습니다 속성을 살펴보고 함수로 넘어갑니다 그래서 여기에 당신이 그것을하지 말아야 할 방식으로 행해진 속성이 있습니다 다시 코 틀린에서 그래서 내가 전에 보여 줬던 문제들 게터와 세터 모두가 일종의 단 하나의 라이너였습니다

하찮은 맞춤 설정 도구를 원한다면 그 기능을 정의하지 마십시오 당신은 아마도 당신이 알고있는 것처럼 당신의 커스텀 세터 문법을 가지고 있습니다 데이터 클래스를 알고 있다면 알 수 있습니다 맞춤 설정 도구 안에는 다음과 같은 필드가 있습니다

제출되지 않았지만 현장 – 백엔드 스토리지에 쓸 수는 있지만 그게 전부입니다 다른 이름으로 추가 이름을 입력 할 필요는 없습니다 그래서 간단합니다, 맞죠? 그런 다음이 코드를 살펴보십시오 그래서 여기에 이미 합리적인 논리가 있습니다 두 가지 속성이 있습니다

그 중 하나는 비공개 및 null 가능입니다 및 변경할 수 있습니다 처음 액세스 할 때 그게 null인지 확인하고 있습니다 그런 다음 가치를 계산하고 그것에 글을 씁니다 그리고 출력하고, getter에서 반환합니다

그래서 무엇입니까? 게으른 재산이지, 그렇지? 나는 수십, 수천을 개인적으로 썼다 Java 및 다른 많은 언어의 사람들 중 그래서 나는 그것에 지루해합니다 그래서 Kotlin은 다음과 같은 추상화 메커니즘을 가지고 있습니다 속성 위임 위임 된 속성을 사용하면 이 게으른 논리의 모든 반복

우리가 신경 쓰는 것은이 표현입니다 그럼 그냥 해보 죠 이 모든 것을 단지 게으름으로 구현하십시오 이거 야 그래서 내가 지금하고있는 것, 나는 말하고있다

내 재산은 단순히 무언가에 의해 초기화되지 않습니다 이 게으른 일에 위임되었습니다 그리고 처음 액세스하면이 람다가 실행됩니다 그리고 나머지는 도서관에 보관 될 것입니다 그래서 게으른 것은 언어 구조가 아닙니다

그것은 단지 라이브러리 함수입니다 당신은 당신 자신을 정의 할 수 있습니다 그리고 도서관은 많은 다른 것들을 제공합니다 그래서 여기 테이크 아웃은 당신이 예를 들어 관찰 할 수있는 공통된 종류의 속성을 가지며, 무언가가 수정되었음을 통보 받아야 할 때, 라이브러리를 사용하거나 직접 작성하십시오 그래서 여기에서, delegates

observable이 일을합니다 표준 라이브러리에서 그러나 원한다면 이와 같은 코드를 작성하지 않아도됩니다 하나의 속성이 있고 다른 속성이 있으면, 다른 하나는 똑같은 일을 반복해서 반복합니다 실제로 당신이해야 할 일은 이것뿐입니다

캡슐화하는 단일 클래스를 선언하십시오 일반 getter와 같은 속성의 논리 및 일반 설정자 그리고 그게 다야 이제 여러 속성에서이 클래스를 참조 할 수 있습니다 비즈니스 로직 데이터베이스 액세스, 모든 종류의 유효성 검사

원하는 모든 것을 라이브러리로 추상화 할 수 있습니다 프로젝트 전체에서 다시 사용할 수 있습니다 그것은 의미가 있습니까? 누가 이것을 이미 사용합니까? 나는 모른다 너무 많은 사람들 당신은 실제로해야합니다

나는 당신이 이것으로부터 이익을 얻을 수 있다고 확신합니다 그래서 이것은 속성에 관한 것입니다 이제는 기능에 대해 알아 보겠습니다 기능은 매우 중요합니다 다시 한번 이것은 매우 끔찍한 코드입니다

Kotlin에서 이와 같은 코드를 작성하지 마십시오 이것은 우리의 습관에 매우 영감을 받았습니다 Java 프로그래밍 언어에서, 내가 가지고있을 때 모든 것을 수업에 넣기 그래서 StringUtil– 프로젝트에 자체 StringUtil이 있습니까? 수업? 오, 그렇지 않다면, 그냥 아주 새로운 프로젝트 일세, 그렇지? 그래서 내 프로젝트 중 하나가 있습니다 하지만 문제는 코 틀린에서 조금 다릅니다

수업을 사용할 필요가 없습니다 음, 우선, Kotlin 수업에는 정체감이 없습니다 따라서이 클래스에서 이러한 함수를 사용하려면, StringUtil, 괄호, 새로운 객체를 만듭니다 나는 매번 새로운 물건을 원하지 않는다 나는 이것을 이렇게 원한다

그래서 나는이 클래스를 객체로 만든다 내 정신 이상에 약간의 개선이 있습니다 권리? 그래서 저는 매번 객체를 만들고있었습니다 나는 함수를 호출하고 싶었다 그건 미친 짓이야

하지만 실제로, Kotlin에서, 나는 어떤 용기를 담을 필요가 없다 왜냐하면 나는 최상위 함수를 가지고 있기 때문이다 그래서 이것은 기능처럼 명백하게 보일 수 있습니다, 그것들은 무엇입니까? 그들은 단지 선언 일뿐입니다, 그렇죠? 그러나 일부 언어는 수업 시간과 수업 시간에만 많은 언어를 사용합니다 이것을 배우고 이것에 의지하십시오 그래서 이것은 Kotlin 방법의 훨씬 더 많은 것입니다, 그러나 그것은 측면에서 여전히 크지 않다

당신이 코 틀린과 함께 할 수있는 것의 두 가지 과부하가있다 그래서 getFirstWord는 문자열을 파싱하기로되어 있습니다 첫 번째 공간을 찾고 첫 번째 단어를 가져 와서 그것을 반환하십시오 하지만 구분 기호가 공백이 아닌 쉼표 인 경우에는 어떻게 될까요? 또는 뭔가? 그래서 여기에 더 많은 기능을 갖춘 버전이 있습니다 그리고 나서, 실제로 이것을 호출하는 방법입니다

대부분의 상황에서 그래서 여기에 표현하고자하는 것은 단지 기본값입니다 Java에서 우리는이 작업에 과부하를 사용하는 데 익숙합니다 일부 사용자는 nullable 매개 변수를 사용합니다 pass와 null을 여기에 넣으면 기본값을 줄 것입니다

Kotlin에서하지 마십시오 너는 필요 없어 실제로 필요한 것은 단순히 기본값을 지정하는 것입니다 내 기본값은 공간입니다 그게 전부 야

따라서 기본값을 에뮬레이트 할 필요가 없었습니다 그들은 둘 다 언어에 속합니다 그리고 당신이 많은, 많은 디폴트를 가질 때 매개 변수가 다른 값, 여러개의 부울 (boolean)을 좋아하는 등등 명명 된 매개 변수 구문을 사용하여 매개 변수 구문을 표현할 수 있습니다 당신은 실제로 필요합니다

나머지는 모두 기본적으로 사용됩니다 그래서 이것은 처음부터 기능을 줄였습니다 그리고 훨씬 더 표현력이 좋습니다 승인 기능면에서 좋지, 그렇지? 사실,이 함수는 중간 정도의 종류입니다

Kotlin 스타일과 Java 스타일 사이 실제로 문자열에서 작동하기 때문입니다 이것을 문자열 클래스에 넣는 것이 좋습니다 오, 잠깐, 그렇지 않아 문자열 클래스는 당신에 의해 제어되지 않기 때문에, 모든 것을 문자열 클래스에 넣을 수는 없습니다 그리고 문자열 API를 최소한으로 유지하려고합니다

그래서 내가 뭘하고 싶은지 나는 내 끈을 말할 수있는 이런 식으로, getFirstWord, 그게 전부입니다 그래서 그것은 방법처럼 보입니다 실제로 확장 기능이라고합니다 문자열 클래스에 앉아 있지 않습니다

나는 JDK에 가지 않고 제어 할 수있는 클래스를 변경하지 않았다 그러나 여전히, 그것은 이렇게 작동합니다 이것이 당신이 사용할 수있는 메커니즘입니다 어떻게 작동하는지 수동으로 설명하겠습니다 그래서 나는 string 타입의 리시버를 가지고있다

이제는이 매개 변수가 더 이상 필요하지 않습니다 여기에이 점을 말할 수 있으며 여기에서이 점을 사용하십시오 또는이 모든 것을 왼쪽에서 생략하십시오 이제는이 방법으로 사용할 수 있습니다 이해가 되니? 나는 재산으로도 똑같이 할 수있다

사실, 이렇게하는 것이 매우 좋을 것입니다 그냥 속성 이름으로 첫 단어가 있습니다 확장 속성을 가질 수 있습니다 물론 사용자 정의가 없습니다 구분 기호에 대한,하지만 그렇지 않으면 당신은 좋은거야

네, 여기에 공간을두기 만하면됩니다 그리고 그게 다야 따라서 확장 기능, 확장 속성 – 그것은 실제로 매우 중요한 아이디어입니다 그것은 단지 편리함이 아닙니다 수업을 실제로 최소한으로 유지할 수 있습니다

그러니 Kotlin의 문자열 클래스를보십시오 그것은 단지 5 가지 방법입니다 자바와 비교하면 스크린과 스크린이 될 것입니다 선언 따라서 API를 최소한으로 유지할 수 있습니다

그리고 모든 유틸리티 기능은 확장 기능 일 수 있습니다 다른 라이브러리에 앉아서 모듈화 할 수 있습니다 이는 API를 설계하는 데있어 매우 중요한 도구입니다 질문 있니? 승인 어쨌든 나는 그들을 데려 갈 수 없었다

좋아, 자, 이것 좀 보자 여기, 나는 아주 전형적인 것을하고 있습니다 나는 계층 구조를 가로 지르고있다 그래서 컨테이너와 리프 요소가 있습니다 컨테이너는 서로 중첩 될 수 있습니다

리프 요소가 거기에 있습니다 모든 잎 요소는 텍스트를 포함하고 I 이 계층 구조에서 모든 텍스트를 추출하려고합니다 꽤 직설적 인 그래서 수업은 세 줄의 코드입니다 별로

요소가 있습니다 아이들 목록이있는 컨테이너가 있습니다 텍스트가 있습니다 자, 나는 이것을 가로 지르고있다 그래서 확장 기능을 사용하고 있습니다

내가 말했듯이 나는 모든 최상위 함수를 사용하고 있습니다 그래서 괜찮아요하지만이 코드가 마음에 들지 않아요 왜 내가 그걸 좋아하지 않니? 여기에서 계층 구조를 탐색하려면 재귀가 필요합니다 그래서 문자열 빌더를 스택 아래로 전달해야합니다

내가 나무를 추락 할 때 그것에 덧붙여 라 그렇다면 최상위 함수로 끝납니다 여기 에선 이것 만 필요합니다 그래서이 곳은 어디에도 필요하지 않습니다 그러나이 함수 내부

그래서 제가 정말로하고 싶은 것은 그냥 안에 넣어 두는 것입니다 그냥 여기 가서 로컬 기능으로 만드십시오 다시 한번, 다른 사람이 필요로하지 않는다는 것을 표현하는 것입니다 더 이상 개인 도우미가 필요하지 않습니다 지역 조력자를 찾는다

그리고 이것은 조금 향상시킬 수 있습니다 실제로 클로저를 사용할 수 있습니다 그래서 여기서 문자열 제작자를 만들 수 있습니다 이 모든 것을 제거하십시오 따라서 여기서 매개 변수를 반환하거나 가져갈 필요가 없습니다

여기에 필요한 것은 위에서 선언 한 것을 사용하는 것입니다 그리고 나서 나는 e의 텍스트를 여기에서 추출한다 문자열 작성기를 toString으로 리턴합니다 ExtractText– 아, 죄송합니다 연장 기능이 맞죠? 아뇨, 미안 해요

그래, 그럼 어떻게되는지 알아 보자 무언가를 지역 기능으로 바꾸고 활용할 수 있습니다 폐쇄 그래서이 변수는 내 함수 밖에서 선언됩니다 바깥 바깥에있는 사람들은 접근 할 수 없습니다

그리고 저는 여기서 그것을 사용하고 있습니다 이제는 로컬 함수, 확장 함수, 최상위 함수, 기본 매개 변수를 사용하십시오 그들은 당신의 코드를 더 좋게 만들 것이다 이제는 아직 무엇이 있는지 살펴 보겠습니다 회색 코드가 보이십니까? 회색 코드는 쓸모가 없습니다

IDE와 컴파일러는 무언가가 아니라는 것을 보여줍니다 거기에 필요했고 실제로는 그렇지 않습니다 이 클래스는 여기에서 확인했기 때문에이 클래스는 중복되었습니다 그래서 이것을 제거 할 수 있습니다 그리고 네가 본다면 나는 모른다

오, 예, 당신은 – 텍스트 변수는 녹색으로 변했습니다 녹색 인 이유는 무엇입니까? 컴파일러가 당신을 위해 캐스트를 알아낼 수 있기 때문입니다 실제로는 훨씬 안전합니다 그것은 편리 할뿐만 아니라 나는 그 곳곳에서 내 캐스팅에 정말 화가났다

그래서 나는 그것이 텍스트임을 압니다 왜 몰라? 자, 이제 알았어 실제로이 변수가 필요하지 않습니다 유일한 용도이기 때문입니다 그리고 여기서도 마찬가지입니다

그리고, 제 컨테이너는 인라인이 될 수 있습니다 그래서 여기 있습니다 스마트 캐스트를 사용할 수 있습니다 코드를보다 안전하고 간결하게 만듭니다 그리고 실제로, 그것은 여전히 ​​모든 캐스트를 만듭니다

귀하의 프로그램에 의미가 있습니다 그래서 지금 Kotlin에서 as 연산자를 볼 때, 당신은 그것이 무엇인가를 의미한다는 것을 압니다 그것은 단지 쓸데없는 칭찬이 아닙니다 위의 체크 또한이 일은 내가하고있는 일 때문에 어리 석다

나는 모든 것에 동일한 기능을 적용하고 있습니다 그리고 그것은 하나의 기능입니다 그래서 제가하고 싶은 것은 이것과 같습니다 그것은 조금 더 좋게 보입니다 그리고 우리가 가지고있는 것을 보도록하겠습니다

우리는 계층 구조를 가로 지르고 있습니다 나는 내 나뭇잎이있다 나는 용기를 가지고있다 그게 제가 표현하고 싶은 것입니다, 그렇죠? 나는 다른 경우를 확인하고있다 그래서, when 문을 사용하는 것이 훨씬 더 좋다

유형을 바로 여기에서 전환 할 수 있습니다 그러나 그것에 대해 성가신 일이 있습니다 그리고 그것은 다시 옛날 습관에서 비롯된 것입니다 나는 가까운 계층 구조를 선언하고있다 컨테이너와 텍스트 만 있습니다

나는 다른 것을 가지고 있지 않다 하지만 지금은 여기이 귀찮은 사건이 있습니다 왜? 컴파일러는 아무 생각이 없기 때문에 컨테이너와 텍스트 이외에는 아무것도 없습니다 그것은 단지 추상적 인 클래스이고 거기에 어떤 경우가 있습니다

하지만 실제로 Kotlin에서 이것을 봉인으로 표현할 수 있습니다 봉인 된 클래스를 가질 수 있습니다 모든 하위 클래스가 알려져 있습니다 이 파일 밖에서 파일을 선언 할 수 있습니다 그리고 이렇게하면 IDE와 컴파일러가 이 다른 것이 쓸모 없다는 것을 알아라

그래서 우리는 거의 두 화면의 코드에서 출발했습니다 하나 이하로, 단순히 Kotlin의 숙어를 적용 이 코드에 질문 있니? 죄송 해요 괜찮아 자 이제이 연습을 계속하겠습니다

쓰여진 표현의 몇 가지 예를 살펴보십시오 마음에있는 오래된 습관과 같습니다 그리고 우리는 그것들을 더 나은 것으로 바꾸려고 노력할 것입니다 따라서 여기서 가장 눈에 띄는 것은 var입니다 나는 결코 var를 사용하지 않는다고 말할 수 없다

Vars가 유용합니다 가변 변수는 많은 좋은 것들에 사용될 수 있습니다 그러나 낙담 한 모양입니다 var가 필요한 경우 아주 좋은 이유가 필요합니다 여기 val을 사용하는 것은 당연한 이유가 아닙니다

그런 다음 여기에서이 세 가지를 살펴 보겠습니다 그것은 반복입니다 반복은 추악합니다 반복은 오류가 발생하기 쉽습니다 특히 이것이 하나의 이름은 아니지만 많은 것들이 쇠사슬에 묶여 있다면

그래서 나는이 반복을 없애고 싶다 제가 할 수있는 말은 전 (ex)입니다 누구는 파스칼을 기억합니까? 파스칼, 누구? 오 좋네 좋은 나는 거의 파스칼에서 시작했다

그래서 그것은 이상한 것이 었습니다 그것은 건물 구조였습니다 Kotlin에서 그것은 기능입니다 우리는 그것을 사용할 수 있습니다 그리고 여기, 우리는 모든 전 것들을 제거 할 수 있습니다

여기, 이렇게 그리고 지금은 더 바보처럼 보인다 나는 단지 같은 변수에 할당하고있다 그러지 마 좋아, 이제는 문자열에 뭔가 더한 프린트 라인이있다

문자열과 무언가, 문자열과 무언가 어색해 대부분의 언어는 이제 문자열 보간법을 사용합니다 Kotlin도 그렇게합니다 여기 실제로 필요한 것은 이것입니다

이걸로 끝났어 를 사용하여 범위로 항목을 가져옵니다 문자열 보간법을 사용하면 좋습니다 이제 여기, 나는 옛날 방식으로지도를 만들고 있습니다 이런 식으로 좀 더 좋게 만들 수 있어요

내 연산자를 사용하여,하지만 정말 더 좋네요 빌더 함수를 사용하면됩니다 그래서 제가 여기서 할 수있는 일은 모든지도 것들을 쌍으로 대체하는 것입니다 아, 쌍은 아니지만 쌍 죄송합니다

이야기 할 때 타이핑하기가 어렵습니다 네지도는 쌍으로 만들 수 있습니다 그렇죠? 지도는 키와 값의 쌍으로 이루어진 집합이었습니다 그러나 실제로, 쌍은 이것에서 일종의 중복입니다 그래서 우리는 보통 여기에 함수를 사용하고 있습니다

내장 연산자가 아니라 라이브러리 함수입니다 여기, 그래서 당신이지도를 만드는 방법입니다 그리고 당신이지도를 가로 질러 가고 싶을 때, 당신은 여기에 열쇠와 가치를 말할 수 있습니다 이 같은 변수를 사용하면 for 루프는 훨씬 간결합니다 이 코드 예제는 if 문을 사용하여, Java에서 코드를 정말 싫어하는 것입니다

이 과제는 여기에서 모두 다 떨어지기 때문에, 그래서 나는 Kotlin에서 이런 일을 정말로하고 싶습니다 그래서, 그리고 많은 다른 것들은 실제로 표현입니다 이것은 꽤 익숙하지 않은 무언가이다 C 언어 패밀리 우리는 코드를 문장으로 나눌 때 익숙하다

표현, 맞죠? 문장은 효과가있는 것입니다 표현은 가치가있는 것입니다 따라서 변수에 표현식을 지정하고 명령문을 작성합니다 사물에 물건을 할당하는 것 그래서 코 틀린은이 절차 적 전통의 중간에 있습니다

기능적 전통 너보다 표현이 더 많아 다른 언어로는 익숙하다 그래서 여기서 할 수 있습니다 물론 var를 사용할 필요는 없습니다

다른 라인을 만들 필요가 없습니다 그리고 즉시 할당 할 수 있습니다 그래서 표현이라면 더 좋게 만드십시오 그건 그렇고, 표현의 결과 블록의 마지막 것입니다 그 때도 마찬가지입니다

단순히 스테로이드로 케이스를 전환하지 않는 경우, 그것은 크게 중요하게 표현입니다 그럼 너도 그렇게 할 수 있지, 그렇지? 여기에 많은 반품은 없지만 여기로 돌아 오는 반품은 훨씬 좋네요 물론 자신을 반복하지 않아도됩니다 그리고 당신도 이것을 말할 수 있습니다 그건 그렇고, 뭔가 이상하고 평평한 지 확인하고 싶다면, 나처럼하지 마

데모 용입니다 집에서 이것을 시도하지 마십시오 상처받을거야 그래, 이렇게하면 더 간단해질 수있어 그래서 다시, 당신은 소음을 제거하려고합니다

이런 코드를 보았을 때, 그냥 소음을 없애려고 노력하십시오 소음은 뇌에 해로울 수 있습니다 마지막으로, 무엇에 대한 간단한 데모 null 허용 여부를 결정하십시오 그래서 이러한 물음표는 nullable 유형에 익숙합니다 코 틀린에요? 몇 명? 나는 정말로 빨리 갈 것이다

따라서 nullable 유형을 사용할 수 있습니다 그리고 컴파일러는 이런 일을합니다 그래서 지금 거기에 있습니다 문자열은 null입니다 당신은 역 참조 할 수 있습니다

이 작업을 수행 할 수 있습니다 나를 비유하다 그건 그렇고, 여기서 할 수 있어요 뿐만 아니라 주위에 if를 쓸 필요가 없습니다 그리고 실제로 이렇게 단순화 할 수 있습니다

또 다른 좋은 점은 이런 식으로 엘비스 연산자를 사용하면 if 문을 무언가에 넣습니다 그리고 이것은 분명히 호기심이 생깁니다 표현의 위치에, 맞지? 엘비스는 어떻게 일하는거야? 엘비스는 문자열의 왼쪽에 표현식을 취하고, 너는 정말로 널 멋지다 그리고 만약 그것이 null이라면, 그것은 오른쪽을 평가합니다 그러나 오른쪽은 표현이어야합니다

맞습니까? 기본적으로 기본 설정으로되어 있습니다 그래서 당신이 지금 왼쪽에 있다면, 오른쪽에 기본값을 사용하십시오 그러나 귀하의 불이행은 단지 반환 일 수 있습니다 이는 어떤 값도 계산하지 않는다는 것을 의미합니다 방금 함수에서 뛰어 내린다

그리고 그것은 타입 시스템에서 꽤 흥미로운 것입니다 관점,하지만 난 여기서 강의를하지 않을거야 나는 데모를하고있다 좋습니다, 우리는 표현에 능숙합니다 기능적 스타일을 살펴 보겠습니다

그래서 사람들은 매우 자주 코 틀린을 언급합니다 기능적 언어로서 나는 그것이 사실이라고 생각하지 않는다 나는 Kotlin이 다중 패러다임 언어라고 생각한다 기능 스타일을 지원합니다

당신은 Kotlin에서 기능을 쓸 필요가 없습니다 그러나 종종 그것을하는 것이 매우 좋다 그래서 이것에 대해 살펴 보겠습니다 그래서 자바를 염두에두고 옛날에는 이 코드를 작성했습니다이 코드는 숫자 목록을 처리합니다

16으로 나눌 수있는자를 선택합니다 다음 16 진수로 변환합니다 그럼 필터 맵이 실제로하는 일입니다 맞습니까? 지도는 이쪽, 필터는 이쪽입니다 그래서 내가 할 수있는 것은, 심지어 나의 IDE의 도움으로, 나는 이것을 할 수있다

모든 프로그래밍 언어의 새로운 버전 이런 게있어 확실히 활용할 수 있습니다 따라서이 필터는 함수입니다 이 람다는 함수 값입니다 그건 그렇고, 변수로 선언하지 않아도됩니다

너는 그걸 없애 버릴 수있어 이것이 λ 매개 변수입니다 Kotlin은 훌륭한 반 기능적 일을 가지고 있습니다 코드에서 어디에서나 말할 수있는 것처럼 말할 수 있습니다 너는이 가치를 가지고있다

나에게도 해줘 나를위한이 목록 그리고 나서 당신이하고 있던 일을 계속하십시오 결코 마음에 들지 않는 것처럼, 이것은 단지 디버그 출력이거나 어떤면이다 효과 나는 여기에 삽입하고 싶다

한편으로는 부작용이별로 작용하지 않습니다 반면에 이것은 디버깅에 매우 유용합니다 당신은 당신의 사슬을 분해 할 필요가 없습니다 등등 또한 let을 사용하고, run을 사용하고, 등등을 사용하십시오

기능적 추상화에 대한 한 가지 중요한 점이 있습니다 비 기능 언어로 이런 일을하면 반복 기능이 생깁니다 바로 여기, 그렇지? 그래서 그것이 무엇인지, 그것은 숫자를 필요로합니다 나는 무언가를 반복하고 싶다

그리고 이것은 무엇인가 기능입니다 그건 그렇고, 당신은 자신의 기능을 발명 할 필요가 없습니다 인터페이스를 사용할 때마다 여기에 함수 유형을 사용하십시오 그것은 int를 취하거나 하나의 단위를 취하는 함수입니다 단위 란 당신이 신경 쓰지 않는 어떤 것입니다

그런 다음 간단히 반복합니다 그래서 내가 반복을 말할 때, 나는 언제나 무엇에 대해 아주 많이 의식하고있다 그것은 저를 요하기 위하여려고하고있다 그래서 그것은 기능입니다 매개 변수로 람다를 사용합니다

그래서 실제로는 또 다른 매개 변수입니다 Kotlin 관례는 그것을 괄호 밖에서 쓰는 것입니다 이런 언어 구조와 더 비슷해 보입니다 그런데, OK, 나는 이것을 달리고있다 나는 람다 객체를 생성해야한다

매번 람다 객체를 생성해야한다 이런 식으로하세요 따라서이 추상화에는 비용이 듭니다 좋은 코드예요 나는 물건을 재사용 할 수있다

코드에서 추상화 수준을 높일 수 있습니다 그러나 그것에는 유료 도로가 있습니다 실제로 Kotlin에서, 당신은 매우 자주 제거 할 수 있습니다 녹색 람다의 통행량 중 – 람다 객체 – 인라인 함수 만 사용하면됩니다 내가 인라인이라고 말할 때, 내 코드는 변하지 않습니다

그래서 여기, 내가 볼 수있는 콜 사이트에서 아무 일도 없었습니다 그러나 내가 쇼 코 틀린 바이트 코드를 말하면, 이것을 자바로 디 컴파일하면됩니다 조금 겁 먹을 뿐이에요 지금까지 쉬운 이야기가 많이있었습니다 내가 이것을하면 – 여기에 그것은 간단합니다

내 람다는 어디 갔지? 글쎄, 컴파일러는 단순히 그것을 최적화했다 람다가 필요하지 않습니다 따라서 여기에 루프가 있고 모든 것을 인라인하면, 당신은 루프로 끝납니다 그게 전부 야 사고 방식의 큰 차이 자바 프로그래밍 언어 Kotlin 프로그래밍 언어에 아직도 람다를 사용하고 있지만, 람다 중 일부는 정말 무료입니다

그리고 그런데이 모든 것들도 무료입니다 표준 라이브러리에있는 수많은 람다 자유로운 추상화이다 당신은 그 (것)들을 부를 것을 지불 할 필요 없다 그것은 단지 당신을 위해 생성 된 코드 일뿐입니다 코 틀린에서 기능적 일뿐만 아니라 편리합니다

싼 말하자면 싸구려,이 예제를 살펴 보겠습니다 그래서 여기에서는 병렬 계산을하려고합니다 글쎄, 그건 바보 같은 표본이야 누구도 베어 스레드에서 병렬 계산을 수행하지 않으며, 등등

하지만 한 가지 요점을 설명하고자합니다 그래서 내가 여기서하고있는 것은, 다시, 내 오래된 습관을 염두에두고, 나는 100,000 개의 실을 만들고 있습니다 각각 10 만개의 스레드가 있습니다 사실, 1 초 동안 잠을 자면 숫자가 인쇄됩니다 그리고 나서이 모든 스레드에 참여해야합니다

내 주요 스레드 그럼 내가 이걸 실행하면 – 오, 오, 오, 그건 예외 였어 그게 뭐야? Java lang out of memory 오류입니다 기본적으로 나 한테 말하는거야, 이봐, 너 100,000 개의 스레드를 생성 할 수 없습니다 너 거기서 미치니? 100,000 스택입니다

그것은 기억에 맞지 않습니다 그냥 합리적 이군 그리고 그것은 공평합니다 OS 스레드는 저렴하지 않습니다 스레드에 대한 자원을 할당해야합니다

그래서 당신은 실로 그런 바보 같은 짓을하지 않습니다 그러나 나는이 예를 coroutines를 통해 가지고있다 코 틀린에서 코 루틴에 대해 누가 압니까? 오 좋네 프로덕션에서 누가 그들을 사용합니까? 좋아, 곧 너희 모두는 그것들을 사용할거야 그러니 여기서보세요

그것은 매우 동일한 코드입니다 그래서 여기에 나란히 놓을 것입니다 매우 많은 코드가 있지만 여기의 스레드 대신에, 코 루틴을 사용하는 비동기 작업을 만들고 있습니다 아래에 그래서 저는 여전히 1 초를 기다리고 있습니다

그리고 이걸 실행하면 기억이 없습니다 모든 숫자를 인쇄하고 있습니다 다시 코 틀린은 코 루틴을 도입했습니다 비동기로 만드는 수단으로 더 나은 계산 그게 효과가 있지만 그 비용은 얼마입니까? 그래서 그것의 비용은 적어도 더 싸다

각 계산마다 스레드가있는 것보다 물론, 아무도 그렇게하지 않습니다 그러나 여전히 코 루틴은 매우 싸다 당신은 100,000 개의 코 루틴, 100 만개처럼 스핀 할 수 있습니다 코 루틴 (coroutines)을 사용하면 비용이 거의 들지 않습니다 그 옛날 실처럼

코 루틴이 실제로 무엇인지 설명해 드리겠습니다 여기 좋네 여기에 레거시 인터페이스가 있습니다 나도 몰라 또는 [부적절한] 인터페이스 – 뭐든간에

그래서 우리는 비동기로 만들기 위해 종종해야만하는 일입니다 또는 우리의 의존성을 뒤집는 것과 같은 것을 만들거나, 등등은 콜백입니다 그래서 나에게 무언가를 해달라고 부탁하십시오 내가 너에게 해줄거야 그리고 내가 끝나면 알려주지

그래서 여기에 모의 서비스, 요청 및 콜백이 있습니다 함수가 전달됩니다 따라서 주석의 작업이 완료되면, 콜백을 호출하고 거기에 내 대답을 전달합니다 그래서 괜찮습니다 모두를 위해 일하고 있습니다

맞습니까? 그러나 이것은 코드가 다음과 같은 경우입니다 두 서비스간에 메시지를 교환하고 싶습니다 그래서 기본적으로 두 개의 메시지를 순서대로 보내고 싶습니다 그리고 여기에 내가해야 할 일이 있습니다 먼저 요청하십시오

그럼 콜백 이것은 요청의 결과입니다 나는 그것을 인쇄한다 그 콜백 내에서 다음 요청 그런 다음 안에 인쇄하십시오

그럼 여기 계단이 보이지, 그렇지? 한 걸음 오, 미안 한 단계, 두 단계, 세 단계

그리고 당신은 실제로 꽤 깊어 질 수 있습니다 이 계단을 내려 가면 좋지 않습니다 그래서 내가 정말로하고 싶어하는 것은 조금 더 간단합니다 하지만 이것은 일종의 용인입니다 하지만 만약에

그냥 상상해보십시오 n 통화와 같이해야합니까? 전화 번호를 정하는 것뿐입니다 이것이 제가 생각해 낸 코드입니다

전혀 좋지 않습니다 그래서 분명히 거기에 재귀가 필요합니다 콜백 내에서 콜백을 중첩해야하기 때문에 콜백 내에서, 맞지? 따라서 재귀가 필요합니다 이것은 내가 생각해 낼 수있는 가장 짧은 코드입니다 배열을 복사합니다

그러지 마 기억의 측면에서 낭비입니다 시간 낭비이다 그것은 2 차입니다 하지만 기본적으로, 당신은 올라와야합니다

이런 식으로 – 둥지 콜백처럼 콜백으로 콜백합니다 그래서 당신은 말할 수 없습니다, 좋아, 이것을 5 번 반복하라, 그렇지? 그래서 내가 정말로하고 싶어하는 것은 이 말처럼, 내가 방금 말한대로, OK, 하나의 요청 보내기, 결과를 기다리고 다른 요청을 보냅니다 그리고 내가 뭔가 반복하고 싶다면, for 루프로 반복하면됩니다 그래서이 코드는 실제로 같은 콜백을 사용하고 있습니다 코 루틴 추상화 만이 이것을 배포하고 있습니다

나에게서 따라서 실제로 콜백 기반 API를 사용할 수 있습니다 지금, 이것으로 바꾸세요 똑바로해라 몇 줄의 코드 만 있으면됩니다

내가 보여줄거야 그래서 이것은 동일한 서비스를 호출합니다 내가이 기능을 여기에 가지고 있기 때문에 그래서 내가하고있는 일은 요청을 돌리고 있습니다 이 단순한 구조를 통해 서스펜션 기능으로 내 콜백 서비스의 확장 기능입니다

내가 말하는 첫 번째 것은 내 coroutines를 중지합니다 그래서 나는 코 루틴에 있다고 가정하고 있습니다 나는 그것을 즉시 중단했다, 나는 나의 연속을 얻는다, 나는 나의 요구를한다 그게 전부 야 나는 정지 됐어

나는 요청을 기다리고있다 그래서 거기에 있습니다 그리고 요청이 완료되면, 나는 코 루틴으로 다시 시작한다고 말합니다 그게 전부 야 따라서이 간단한 코드를 사용하면 콜백 기반 API를 사용할 수 있습니다

coroutine API로 변환 할 수 있습니다 죄송합니다이 코드를이 코드로 만듭니다 제 감각으로는 훨씬 더 읽기 쉽습니다 당신이 그것을 좋아합니까 방법? 좋아, 관중석에 고개를 끄덕 거리다

고맙습니다 그래, 사실, 네가 원한다면 여기에 더 신중하게 – 그리고 네가 원한다고 확신 해 캐치 예외가 필요합니다 따라서 예외를 처리하는 것은 매우 중요합니다 그리고 이것만큼 쉽습니다

예외를 잡으십시오 무슨 일이 생기 든 오, 미안해

물론 여기가 아닙니다 귀하의 요청에 따라 어떤 일이 일어나든지, 그냥 잡으려고하고 resumeWithException 그래서 이것은 coroutines를 통해 예외를 전파 할 것입니다 아주 잘 그리고 여러분은 여기에 시도 잡기를 쓸 수 있습니다 – try catch와 함께 이것을 둘러 쌉니다

미안, 뭐든간에 예외를 잡아라 마치 순차적 코드처럼

그러나 밑에는 모두 비동기식입니다 이와 같은 asyncio 파일 시스템과 같은 HTTP 요청을 수행 할 수 있습니다 필요한 모든 것을 백그라운드 스레드로 처리 할 수 ​​있습니다 어떻게 좋지 않니? 그리고 나는 오늘 당신에게 보여줄 마지막 예를 생각합니다 이거 야

코 루틴이 어떻게 당신을 도울 수 있는지에 대한 또 다른 대변입니다 보세요 그래서 내가하고 싶은 것은 무한한 숫자의 흐름 무한한 숫자의 흐름을 좋아하는 사람은 누구입니까? 나는 그들을 아침 식사로 먹는다 그래서 나는 피보나치 시퀀스를 생성하기를 원합니다

그리고 나서, 나는 그들 중 20 명을 취할 수 있습니다 여기, 단지 20의 시퀀스 나는 200, 2,000 걸릴 수있어 필자는 필터링, 맵핑, 슬라이스 할 수 있습니다 이 buildSequence 함수는 라이브러리 함수입니다

Kotlin 표준 라이브러리에 있습니다 그리고 실제로 coroutine과 같은 메커니즘을 기반으로합니다 백그라운드 처리는하지 않습니다 그것은 모두 같은 스레드에 있어요 그것이 무엇인지, 그것은 여기에서 모든 산출량 진술을 취합니다, 그들을 순서대로 놓습니다

그래서 제가 여기서 무언가를 양보하고 싶다면, 그냥 할게요 나는 내 서열에 2를 삽입한다 내가 원한다면– 말하자면, tmp가 10보다 크면, 계속 – 나는 내 논리의 조각들을 건너 뛸 수있다 그래서 그것은 어떤 코 루틴처럼 간단합니다 그것은 당신에게 게으른 순서를 제공합니다

그래서 테이크 어웨이 수업은 저렴합니다 함수는 최상위 또는 로컬입니다 과부하가 없어서 기본값을 에뮬레이션합니다 속성 사용, 위임 된 속성 사용, 코 루틴 사용 좋은 Kotlin을 보내십시오 그리고 저는 오늘 좀 더 많은 활동을 광고하고 싶습니다

그래서 내가 아직 취할 수없는 질문이 있다면, 우리가 근무하는 12시 30 분까지 갈 수 있습니다 샌드 박스 영역으로 이동할 수 있습니다 우리가 코 틀린 부스에있는 C 적어도 하루는 그리고 내 이야기 ​​직후에 Jake Wharton의 Android KDX에 대한 이야기입니다 매우 흥미 롭습니다

2 단계에 있다고 믿습니다 그래서 거기에 오신 것을 환영합니다 주의 해 주셔서 대단히 감사합니다 [박수 갈채] [음악 재생]

How to download & Use Lucky Patcher Android Without Root (100% Working)

안녕하세요 내 채널로 돌아 오신 것을 환영합니다

럭키 패쳐를 다운로드하고 루트없이 사용하는 방법을 오늘 설명하십시오 문제가있는 경우 내 채널을 구독하고 좋아요를 말하고 댓글을다는 것을 잊지 마세요 내가 루트를 사용하는지 확인해 보도록하겠습니다 그렇지 않으면 루트가 없습니다 브라우저를 열고 mrshehab-tito

blogspotcom을 검색하십시오 다운로드 클릭 다운로드 후 그냥 Playstore에서 winrar를 다운로드해야합니다 행운의 패치를 설치하십시오 계속 클릭하십시오 이제 해킹 할 게임을 봅시다

나는 배고픈 상어를 해킹 할 것이다 배고픈 상어를 찾아라 패치 메뉴를 클릭하십시오 수정 된 apk 파일 만들기를 클릭하고 apk를 클릭하여 앱 및 레벨을 다시 작성하십시오 에뮬레이션 파일로 이동하여 제거하고 설치하십시오

설정을 클릭하십시오이 소스에서 허용 '을 클릭하십시오 지금 내가 볼 수있는 것을 보아라 내 비디오가 마음에 들면, 나를 좋아하고 코멘트하고 구독 해주세요 감사합니다

지켜보기 위해