
Andrew
29.01.2018
16:56:01
Котлин уже сто лет как on par с джавой, в некоторых местах её даже немного обгоняя, если использовать с умом. В случае с LibGDX проще потерять производительность, если писать неэффективный код (ну, там, не использовать пулы и всё такое прочее).

Виталий
29.01.2018
16:56:05
просто в котлине кооллекции взяты с джавы, а в либе они переделаны спецом под ведроид, тогда стоит юзать массивы либы ?
ясно, спасибо за ответы.

Google

Igor
29.01.2018
16:59:09

Quantum Harmonizer
29.01.2018
16:59:20

Виталий
29.01.2018
16:59:34
ну да
ну для ведроида это +

Quantum Harmonizer
29.01.2018
17:00:06
это вообще для игр маст хэв

Andrew
29.01.2018
17:00:22
Я бенчмарки не делал, так что конкретного ничего не подскажу. Да и игру я забросил задолго до момента, когда эту самую производительность можно было бы щупать на разных девайсах. Присоединяюсь к совету о профайлерах -- в коде ж быстро меняется, использовать или не использовать пул, если я правильно помню.
Ну и вы ж понимаете, вероятно, что вопрос не столько в размере пула, сколько в том, насколько часто создаются и удаляются объекты.

Виталий
29.01.2018
17:01:57
а тут я стараюсь делать так, что мои объекты вообще не пересоздаются, просто меняются снутри, и память вообще не ест

Andrew
29.01.2018
17:03:19
Пул делает за вас ровно то же самое. Так что если вы сделали за него его работу, то он вам не особо поможет ;)

Виталий
29.01.2018
17:04:10
А в чем кайф null в котлине ? Я подумал что если я помечу "?" то кусок этого кода просто проигнорится и не будет вызван или он его даже не скомпилирует ? Если не скомпилирует, но null потом заменится на объект, и как бэ ничего и не будет
код то не скомпилен
вообщем пробовал, у меня идея все белым помечала... что то не пахало ))) юзал !! всякие там )

Andrew
29.01.2018
17:06:32
В Kotlin кайф не от null, а от того, что можно в конкретном куске кода гарантировать его отсутствие.
Забудьте о !!, этот оператор превращает волшебный Kotlin в б-гомерзкую Java.

Google

Andrew
29.01.2018
17:06:51
Пробегитесь по Kotlin Koans, если этого ещё не делали -- частично придёт просветление.

Виталий
29.01.2018
17:07:08
так а что это

Quantum Harmonizer
29.01.2018
17:07:35

Виталий
29.01.2018
17:07:54
нашел

Andrew
29.01.2018
17:08:03
Что "это"? !! -- это способ превратить T? и T, попутно отстрелив себе ногу, когда там будет null.

Виталий
29.01.2018
17:10:28
ну смотрите, у меня есть var я оюъявляю его "?" и присваиваю null, этот вар где то в коде юзаетсяпроверить на != null я так и не смог) и вот я думал что если у меня вар = null то этот кусок кода проигнорится, и когда он уже не будет null то будет работать, Это не так ?
в процессе выполнения программы

Quantum Harmonizer
29.01.2018
17:11:45
> проверить на != null я так и не смог
надо код

Виталий
29.01.2018
17:12:10
пробники были , не помню уже что я там писал ((
суть не в этом..

Даниил
29.01.2018
17:12:25

Виталий
29.01.2018
17:12:33
правильно ли я понял работу null

Andrew
29.01.2018
17:12:43
var x: Int?
x?.let {
// it -- это Int
}
А вообще Котлин дисциплинирует и учит любить val
(это как final в джаве)

Виталий
29.01.2018
17:14:02

Yury
29.01.2018
17:14:08
А зачем функциональщикам котлин, если есть скала? В чем интерес?

Даниил
29.01.2018
17:14:30

Виталий
29.01.2018
17:14:39
скалу я не знаю и даже не видел )) увидел котлин - понравлся )

Google

Yury
29.01.2018
17:14:41
Все-таки котлин более наследует ООП стиль от джавы, или я не прав?

Даниил
29.01.2018
17:14:48

Andrew
29.01.2018
17:15:07

Quantum Harmonizer
29.01.2018
17:15:22

Мытко
29.01.2018
17:15:36
Ну котлин проще скалы
Плюс встроенный транслятор с джавы в котлин

Quantum Harmonizer
29.01.2018
17:16:11

Andrew
29.01.2018
17:16:20
как не скастуется, если скастуется?
Если это проперти, а не локальная переменная, то не скастуется из-за возможности обнулить это проперти в другом потоке после проверки, но перед использованием.

Yury
29.01.2018
17:16:29
Но вы пишите на котлине прям в функциональном стиле?

Мытко
29.01.2018
17:16:33
Плюс куча практик была перенесена в котлин из джавы, чтобы сделать побольше сахара

Quantum Harmonizer
29.01.2018
17:16:41

Artyom
29.01.2018
17:16:51

Виталий
29.01.2018
17:16:59
в смешанном скорее всего

Даниил
29.01.2018
17:17:07

Yury
29.01.2018
17:17:23
Я вот чуть пробовал хаскель, но до меня не дошло как можно смешать фунциональщину и ооп

Quantum Harmonizer
29.01.2018
17:17:32

Даниил
29.01.2018
17:17:42

Виталий
29.01.2018
17:18:02
да нету уже примеров )) я просто вопросы задаю
и читаю ответы

Даниил
29.01.2018
17:19:33
https://kotlinlang.org/docs/reference/typecasts.html

Виталий
29.01.2018
17:20:51
во блин, а ведь я это читал , память дырявая ((((

Google

Виталий
29.01.2018
17:20:57
смотрел*
всем спасиб за ответы, пойду дальше голову ломать )

Andrew
29.01.2018
17:22:37
Ещё раз: если в функции есть переменная типа Int?, то после проверки её на null она стайпкастится до Int. Если речь о nullable var проперти, то тайпкаст после проверки не сработает, и предупреждение в IDE вполне себе хорошо объясняет, почему, просто над этим предупреждением надо один раз посидеть и вдумчиво его прочитать. После этого станет понятно, что с этим делать ;)

Igor
29.01.2018
17:23:03

Andrew
29.01.2018
17:23:24

Даниил
29.01.2018
17:24:10
всем спасиб за ответы, пойду дальше голову ломать )
вот тут ещё можно поподробнее именно про работу с нуллаблами прочитать: https://stackoverflow.com/questions/34498562/in-kotlin-what-is-the-idiomatic-way-to-deal-with-nullable-values-referencing-o#34498563

Igor
29.01.2018
17:24:59

Andrew
29.01.2018
17:26:48

Даниил
29.01.2018
17:28:18

Quantum Harmonizer
29.01.2018
17:30:28

Andrew
29.01.2018
17:31:33
Пахнет холиваром, пойду схожу за попкорном.

Даниил
29.01.2018
17:31:42

Мытко
29.01.2018
17:31:51
я не понимаю людей, которые спрашивают зачем нужен котлин или чем он лучше джавы. почему бы просто не открыть доку и не почитать?
они всё отлично сделали.
https://kotlinlang.org/docs/reference/basic-syntax.html

Quantum Harmonizer
29.01.2018
17:32:11
Ты примешиваешь себе какое-то поведение, а мог бы агреггировать объект (или несколько), реализующий это поведение.

Andrew
29.01.2018
17:34:16
Примешивать же можно и к классам, которыми ты не управляешь -- насколько я понимаю, в этом их основная прелесть. Ну и аггрегировать придётся ручками, ибо вроде как делегировать нескольким объектам одновременно нельзя.

Google

Andrew
29.01.2018
17:34:31
Ну то есть можно, если делегировать проперти, но нельзя, если класс в целом.
(не то, чтобы мне хоть раз довелось использовать эту фичу, ибо она вроде как не позволяет переопределять методы).

Даниил
29.01.2018
17:34:38
хм, я посмотрел на трейты в scala
в этом действительно мало смысла

Quantum Harmonizer
29.01.2018
17:35:59

Andrew
29.01.2018
17:36:27

Даниил
29.01.2018
17:36:43

Andrew
29.01.2018
17:36:52

Quantum Harmonizer
29.01.2018
17:37:04

Даниил
29.01.2018
17:37:18

Andrew
29.01.2018
17:37:23

Даниил
29.01.2018
17:37:32
состояние не надо примешивать, фу

Andrew
29.01.2018
17:38:00
Ну и да, можно ж примешиванием интерфейс определить, чего экстеншн функции не позволяют, верно отмечено.

Даниил
29.01.2018
17:38:17

Quantum Harmonizer
29.01.2018
17:38:45

Andrew
29.01.2018
17:38:56
В сравнении с Го в Расте вполне себе есть ООП :D

Quantum Harmonizer
29.01.2018
17:39:16

Andrew
29.01.2018
17:39:25

Даниил
29.01.2018
17:39:32

Andrew
29.01.2018
17:39:59
Помнится мне, в котлине изначально тоже были трейты, но потом их понизили до интерфейсов.

Quantum Harmonizer
29.01.2018
17:40:11

Даниил
29.01.2018
17:40:30
там трейты, они помощнее интерфейсов
отличие в том что
1) реализация трейта отдельно от объявления структуры, поэтому как раз можно примешивать поведение к чужим структурам
2) можно объявлять статические методы в трейте