SlideShare uma empresa Scribd logo
1 de 16
Kotlin
Начало
whoami
Мамыров Дастан
КГТУ им. Раззакова ПОВТиАС
выпуск 2015 года
Практикую моб разработку с 2014 года
Сейчас работаю в MadDevs 🤘
Kotlin.
Начало.
За эти годы создатели упростили|улучшили многое, и сегодня мы с вами разберем одно из
последних добавлений.
Kotlin - статически типизированный язык программирования, работающий поверх JVM и
разрабатываемый компанией JetBrains.
Который с выходом Android Studio 3.0 является официальным языком программирования
для платформы Android.
Немного скучной информации…
Язык разрабатывается с 2010 года, представлен общественности в июле 2011.
Исходный код реализации языка был открыт в феврале 2012.
В феврале был выпущен milestone 1, включающий плагин для IDEA.
В июне — milestone 2 с поддержкой Android.
В декабре 2012 года вышел milestone 4, включающий, в частности, поддержку Java 7.
В феврале 2016 года вышел официальный релиз-кандидат версии 1.0, а 15 февраля 2016 года
— релиз 1.0. 1 марта 2017 вышел релиз 1.1.
В мае 2017 года компания Google сообщила, что инструменты языка Kotlin, основанные на
JetBrains IDE, будут по стандарту включены в Android Studio 3.0 — официальный инструмент
разработки для ОС Android
Полная двусторонняя совместимость с Java
То есть можно конвертировать код туда и обратно
● Null Safety
● Nullable Types and Non-Null Types
● Safe Calls (Безопасные вызовы)
Безопасные вызовы
shareActionProvider?.setShareIntent(shareIntent)
Если вы точно уверены в отсутствии null то можете использовать “!!”
И по умолчанию переменные создаются не null, если нужен то в обьявлении надо указывать ?
Оператор Элвис
! но это не тинарный оператор
val len = coverId?.length ?: 0
Также можно не указывать тип при создании переменной, но порой все же
лучше подстраховаться.
private var imageURL = ""
val maxRetryCount = 3
Еще можно перестать париться с блоками и использовать лямбды.🤘
fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }
Лямбда, вложенная в лямбду
val months: List<Date> = ...
val hallsRents: Map<Date, Map<String, Int?>> = months
.map { month ->
month to halls
.map { it.name to rent(month, it) }
.toMap()
}
.toMap()
Расширения для функций
fun <T> MutableList<T>.swap(index1: Int, index2: Int) {
val tmp = this[index1] // 'this' ссылка на List
this[index1] = this[index2]
this[index2] = tmp
}
Но при этом они не расширяют и не меняют исходный класс, а просто являются статичными
функциями для него.
А если хотите добавить внутрь своего класса статичную функцию то придется добавить его
внутрь companion object
class MyClass {
companion object { }
}
Параметры по умолчанию
data class User (
val name: String,
val birthDate: Date,
val created: Date = Date(),
val disabled: Boolean = false
)
val newUser = User("test", SEPTEMBER_1970)
apply - блок функции передающий себя в качестве параметра и возвращающий
себя
// Как было
fun createIntent(intentData: String, intentAction: String): Intent {
val intent = Intent()
intent.action = intentAction
intent.data=Uri.parse(intentData)
return intent
}
// Как стало
fun createIntent(intentData: String, intentAction: String) =
Intent().apply { action = intentAction }
.apply { data = Uri.parse(intentData) }
геттеры и сеттеры
Kotlin автоматически генерирует геттеры и сеттеры по умолчанию.
В Котлине, вы должны указать специальный сеттер или геттер, только если он у вас есть.
В противном случае, Kotlin автогенерирует его для вас
var a = 1
set(value) { field = Math.abs(value) }
И вправду. Очень схож с свифт и Айосникам легче будет перейти на kotlin
пример: Swift is like Kotlin
Всем спасибо.
Увидимся еще. ;)

Mais conteúdo relacionado

Semelhante a Kotlin Начало

введение
введениевведение
введение
anxesenpa
 
Лекция 6
Лекция 6Лекция 6
Лекция 6
itc73
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
UA Mobile
 
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Александр Шамрай
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
metaform
 

Semelhante a Kotlin Начало (20)

C++ теория
C++ теорияC++ теория
C++ теория
 
введение
введениевведение
введение
 
Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”Online TechTalk “Flutter Mobile Development”
Online TechTalk “Flutter Mobile Development”
 
Лекция 6
Лекция 6Лекция 6
Лекция 6
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design Patterns
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)
 
VAMR ACADEMY Второе занятие
VAMR ACADEMY Второе занятиеVAMR ACADEMY Второе занятие
VAMR ACADEMY Второе занятие
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
 
лек13 3
лек13 3лек13 3
лек13 3
 
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
Изучение кода с использованием инструментов архитектуры в Visual Studio Ultim...
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Ruby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейсRuby on Rails. Пользовательский интерфейс
Ruby on Rails. Пользовательский интерфейс
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Обзор SObjectizer 5.5
Обзор SObjectizer 5.5Обзор SObjectizer 5.5
Обзор SObjectizer 5.5
 
лек5 6
лек5 6лек5 6
лек5 6
 
Tapestry it is simple
Tapestry it is simpleTapestry it is simple
Tapestry it is simple
 
6
66
6
 
Javascript
JavascriptJavascript
Javascript
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
C++ Базовый. Занятие 15.
C++ Базовый. Занятие 15.C++ Базовый. Занятие 15.
C++ Базовый. Занятие 15.
 

Mais de Mad Devs

Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101.
Mad Devs
 
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Devs
 

Mais de Mad Devs (20)

Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
Держите одеяло у себя: как общаться с кандидатом и узнавать все, что вам инте...
 
Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество Дружелюбнй онбординг: как с увеличением количества не потерять качество
Дружелюбнй онбординг: как с увеличением количества не потерять качество
 
Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101. Mad Stream: Software Architecture 101.
Mad Stream: Software Architecture 101.
 
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
Mad Stream: Соло-прокачка мобильного разработчика. Спикер - Айбек Ногоев.
 
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy FedorenkoMad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
Mad Stream - 7 habits of highly awesome developers. Speaker - Anatoliy Fedorenko
 
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
Mad Stream: "Что можно напечатать на 3d принтере, помимо еще одного 3d принте...
 
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий КононенкоMaв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
Maв Stream: "Факт карты на службек у ПМа", спикер – Дмитрий Кононенко
 
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия КононенкоЛайфхаки менеджмента на удаленке от Дмитрия Кононенко
Лайфхаки менеджмента на удаленке от Дмитрия Кононенко
 
Mad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrainMad Talks. Astashov_splitbrain
Mad Talks. Astashov_splitbrain
 
Flutter vs Native App Development
Flutter vs Native App DevelopmentFlutter vs Native App Development
Flutter vs Native App Development
 
Mad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companiesMad Talks. Marketing tips for tech companies
Mad Talks. Marketing tips for tech companies
 
The paradox of choice in design
The paradox of choice in designThe paradox of choice in design
The paradox of choice in design
 
Git and Github for Beginners
Git and Github for Beginners Git and Github for Beginners
Git and Github for Beginners
 
How to hire freelancers
How to hire freelancersHow to hire freelancers
How to hire freelancers
 
Ethereum blockchain
Ethereum blockchainEthereum blockchain
Ethereum blockchain
 
"Outside In". Web application testing.
"Outside In". Web application testing."Outside In". Web application testing.
"Outside In". Web application testing.
 
Asynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use itAsynchrony in python exists and why should you use it
Asynchrony in python exists and why should you use it
 
Ethereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактовEthereum: аспекты разработки смарт-контрактов
Ethereum: аспекты разработки смарт-контрактов
 
Why we sleep. Michael Ivashenko
Why we sleep. Michael IvashenkoWhy we sleep. Michael Ivashenko
Why we sleep. Michael Ivashenko
 
Удаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитикаУдаленное управление приложением и его аналитика
Удаленное управление приложением и его аналитика
 

Kotlin Начало

  • 2. whoami Мамыров Дастан КГТУ им. Раззакова ПОВТиАС выпуск 2015 года Практикую моб разработку с 2014 года Сейчас работаю в MadDevs 🤘
  • 3. Kotlin. Начало. За эти годы создатели упростили|улучшили многое, и сегодня мы с вами разберем одно из последних добавлений. Kotlin - статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Который с выходом Android Studio 3.0 является официальным языком программирования для платформы Android.
  • 4. Немного скучной информации… Язык разрабатывается с 2010 года, представлен общественности в июле 2011. Исходный код реализации языка был открыт в феврале 2012. В феврале был выпущен milestone 1, включающий плагин для IDEA. В июне — milestone 2 с поддержкой Android. В декабре 2012 года вышел milestone 4, включающий, в частности, поддержку Java 7. В феврале 2016 года вышел официальный релиз-кандидат версии 1.0, а 15 февраля 2016 года — релиз 1.0. 1 марта 2017 вышел релиз 1.1. В мае 2017 года компания Google сообщила, что инструменты языка Kotlin, основанные на JetBrains IDE, будут по стандарту включены в Android Studio 3.0 — официальный инструмент разработки для ОС Android
  • 5. Полная двусторонняя совместимость с Java То есть можно конвертировать код туда и обратно
  • 6. ● Null Safety ● Nullable Types and Non-Null Types ● Safe Calls (Безопасные вызовы)
  • 7. Безопасные вызовы shareActionProvider?.setShareIntent(shareIntent) Если вы точно уверены в отсутствии null то можете использовать “!!” И по умолчанию переменные создаются не null, если нужен то в обьявлении надо указывать ?
  • 8. Оператор Элвис ! но это не тинарный оператор val len = coverId?.length ?: 0
  • 9. Также можно не указывать тип при создании переменной, но порой все же лучше подстраховаться. private var imageURL = "" val maxRetryCount = 3 Еще можно перестать париться с блоками и использовать лямбды.🤘 fruits .filter { it.startsWith("a") } .sortedBy { it } .map { it.toUpperCase() } .forEach { println(it) }
  • 10. Лямбда, вложенная в лямбду val months: List<Date> = ... val hallsRents: Map<Date, Map<String, Int?>> = months .map { month -> month to halls .map { it.name to rent(month, it) } .toMap() } .toMap()
  • 11. Расширения для функций fun <T> MutableList<T>.swap(index1: Int, index2: Int) { val tmp = this[index1] // 'this' ссылка на List this[index1] = this[index2] this[index2] = tmp } Но при этом они не расширяют и не меняют исходный класс, а просто являются статичными функциями для него. А если хотите добавить внутрь своего класса статичную функцию то придется добавить его внутрь companion object class MyClass { companion object { } }
  • 12. Параметры по умолчанию data class User ( val name: String, val birthDate: Date, val created: Date = Date(), val disabled: Boolean = false ) val newUser = User("test", SEPTEMBER_1970)
  • 13. apply - блок функции передающий себя в качестве параметра и возвращающий себя // Как было fun createIntent(intentData: String, intentAction: String): Intent { val intent = Intent() intent.action = intentAction intent.data=Uri.parse(intentData) return intent } // Как стало fun createIntent(intentData: String, intentAction: String) = Intent().apply { action = intentAction } .apply { data = Uri.parse(intentData) }
  • 14. геттеры и сеттеры Kotlin автоматически генерирует геттеры и сеттеры по умолчанию. В Котлине, вы должны указать специальный сеттер или геттер, только если он у вас есть. В противном случае, Kotlin автогенерирует его для вас var a = 1 set(value) { field = Math.abs(value) }
  • 15. И вправду. Очень схож с свифт и Айосникам легче будет перейти на kotlin пример: Swift is like Kotlin

Notas do Editor

  1. Меня зовут Дастан и я работаю в MadDevs Еще во время учебы в универе я начал изучать мобильное программирование и продолжаю по сей день. Мы с командой до сих пор вздрагиваем вспоминая те страшные времена с Eclipse.