Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kotlin Начало

150 views

Published on

Almaty GDG 2017
Neobis Mob Dev meetup Fall 2017

Published in: Software
  • Be the first to comment

  • Be the first to like this

Kotlin Начало

  1. 1. Kotlin Начало
  2. 2. whoami Мамыров Дастан КГТУ им. Раззакова ПОВТиАС выпуск 2015 года Практикую моб разработку с 2014 года Сейчас работаю в MadDevs 🤘
  3. 3. Kotlin. Начало. За эти годы создатели упростили|улучшили многое, и сегодня мы с вами разберем одно из последних добавлений. Kotlin - статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Который с выходом Android Studio 3.0 является официальным языком программирования для платформы Android.
  4. 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. 5. Полная двусторонняя совместимость с Java То есть можно конвертировать код туда и обратно
  6. 6. ● Null Safety ● Nullable Types and Non-Null Types ● Safe Calls (Безопасные вызовы)
  7. 7. Безопасные вызовы shareActionProvider?.setShareIntent(shareIntent) Если вы точно уверены в отсутствии null то можете использовать “!!” И по умолчанию переменные создаются не null, если нужен то в обьявлении надо указывать ?
  8. 8. Оператор Элвис ! но это не тинарный оператор val len = coverId?.length ?: 0
  9. 9. Также можно не указывать тип при создании переменной, но порой все же лучше подстраховаться. private var imageURL = "" val maxRetryCount = 3 Еще можно перестать париться с блоками и использовать лямбды.🤘 fruits .filter { it.startsWith("a") } .sortedBy { it } .map { it.toUpperCase() } .forEach { println(it) }
  10. 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. 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. 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. 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. 14. геттеры и сеттеры Kotlin автоматически генерирует геттеры и сеттеры по умолчанию. В Котлине, вы должны указать специальный сеттер или геттер, только если он у вас есть. В противном случае, Kotlin автогенерирует его для вас var a = 1 set(value) { field = Math.abs(value) }
  15. 15. И вправду. Очень схож с свифт и Айосникам легче будет перейти на kotlin пример: Swift is like Kotlin
  16. 16. Всем спасибо. Увидимся еще. ;)

×