Pull to refresh

Comments 14

Простомтрел только половину видео, но уже хочу попробовать Kotlin. Очень крутая штука.
В целом прикольная тема. Но как геймдевелопер не особо вижу зачем kotlin мне нужен.
Все таки игры пишем кроссплатформенными, чтобы и на iOS без проблем собиралось.
В итоге java прослойка получается достаточно мелкая и она практически не напрягает.
Вот была бы возможность kotlin под iOS пускать — тогда можно было бы смотреть в сторону разработки игр на этом языке.
У вас есть опыт работы с RoboVM? Если да, то расскажите о плюсах/минусах.
То есть тащить с собой виртуальную машину ради… чего, кстати?
Однажды на квартирнике в рамках Code Fest 2014 я задал такой вопрос Филиппу Торчинскому:

«Привносит ли Kotlin какие-то свои идеи поверх Java, как это делает, например, Scala, или же Kotlin является лишь синтаксической реинкарнацией Java?»

Филипп ответил, что да, такие идеи в их языке есть, но раскрыть тему не смог. Поэтому вопрос остается открытым, — презентация тоже на него не отвечает.
А Kotlin тянет за собой библиотеку на несколько мегабайт, как Scala?
в видео говорится что либа занимает всего 800кб
Подтверждаю, что на kotlin компилится и деплоится быстрее. Я пробовал чисто java, java + retrolambda, kotlin, scala и scala + scaloid. И kotlin был на равне с java, что меня очень удивило.
kotlin клёвая штука! Иногда пописываю под android на java (хотя сам дотнетчик), и очень хотел бы заменить яву на котлин полностью (ибо боль писать на яве после шарпа в плане синтаксического сахара, уж простите).
Сейчас пишу qwerty поиск в AppDialer-е частично на Kotlin. Это праздник какой-то. Компилится быстро, поддержка в IDEA шикарная, gradle собирается на раз два. Получается очень плотный код. Что мне особенно понравилось пока что:
  • Extensions. Получаю float из xml ресурсов через «отсутствующий» API Resources.getFloat(resId)
    //Define somewhere
    public fun Resources.getFloat(resourceId: Int): Float {
        val outValue = TypedValue() ;
        getValue(resourceId, outValue, true)
        return outValue.getFloat() ;
    }
    //Use
    val w = resources.getFloat(R.fraction.qw_extra_space_along_edges)
    
  • Lambdas. Получить из массива хитрый HashMap вместо пол страницы кода на Java
    keys.toMap { it }.mapValues {
                it.value.toString()
                        .plus(keyMapEn[it.key])
                        .toCharArray()
            }
    
  • Elvis operator.Использовать пустую строку если переменная null
    keyLabelLoc.setText(labelLoc ?: "")
    
  • Delegated properties.Ленивая инициализация свойства класса
     val keyMapLocal: Map<Char, String> by Delegates.lazy {
            when (langCode) {
                "ru" -> qwertyMapRu
                else -> mapOf<Char, String>()
            }
        }
    


Все примеры прямо из проекта. Пробовал и Scala еще до серьезного развития Kotlin. Но Scala в Android как Винни в Кроликовой норе.
Но Scala в Android как Винни в Кроликовой норе.

Просто вы тянете весь рантайм за собой, но реально нужно 5% от всего объёма. Proguard справляется с задачей, но стандартных средств в компиляторе scala для отслеживания зависимостей классов конечно не хватает.
Это правда. Т.е. если Винни долго подержать то он из норы вылезет. Что-то proguard отрезает, но время компиляции/дексинга увеличивается значительно.
У вас там на главной, Expressive-} see example, опечатка, надо
println("${person} is ${age} years old")
(сейчас in вместо is)
Sign up to leave a comment.