@kotlin_lang

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

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

ясно, спасибо за ответы.

Google
Igor
29.01.2018
16:59:09
а эффективно использовать пулы на 300-500 объектов четырех, шести типов ?
Чувак, зачем гадать. Есть же профайлеры и для десктопа и для android.

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
так а что это
nullable — это бесплатный optional

Виталий
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
ну смотрите, у меня есть var я оюъявляю его "?" и присваиваю null, этот вар где то в коде юзаетсяпроверить на != null я так и не смог) и вот я думал что если у меня вар = null то этот кусок кода проигнорится, и когда он уже не будет null то будет работать, Это не так ?
не очень внятная постановка вопроса если у тебя есть что-то типа: var x: Int? = null ... if (x == null) { // ... } else { // <-- здесь x автоматически скастуется к Int (не nullable) и дополнительно его приводить не надо }

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

Andrew
29.01.2018
17:12:43
var x: Int? x?.let { // it -- это Int }

А вообще Котлин дисциплинирует и учит любить val

(это как final в джаве)

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
А зачем функциональщикам котлин, если есть скала? В чем интерес?
Легковесный stdlib, маленький оверхед, удобный интероп с джавкой. Но я не скалист, я не отвечаю за слова.

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

Quantum Harmonizer
29.01.2018
17:16:11
А зачем функциональщикам котлин, если есть скала? В чем интерес?
в котлине нет тех печалек, которые есть в скале — implicit conversions, traits, tuples, прочих невменяшек

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
Виталий
29.01.2018
17:16:59
в смешанном скорее всего

Даниил
29.01.2018
17:17:07
чет не понял тогда в чем отличие от жабы ? вроде все тоже самое, только еще лишний знак вопроса
смотри, смарткаст Int? в Int произойдёт только если выше была проверка на null, как в примере

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

Quantum Harmonizer
29.01.2018
17:17:32
А в чем собственно неменяемость тупплов?
Элементы не именованы, это неявно. В котлине их попробовали и осознанно отказались.

Виталий
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
в котлине нет тех печалек, которые есть в скале — implicit conversions, traits, tuples, прочих невменяшек
Ну такое, там есть вещи пострашенее - типа макросов и времени компиляции

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
Я вот чуть пробовал хаскель, но до меня не дошло как можно смешать фунциональщину и ооп
Ну смотри, есть же коллекции и всякие операторы (map/flatMap) на них - чем не “локальный” ФП внутри ООП Лично я то не мешаю - пишу все на функциях внутри object

Andrew
29.01.2018
17:26:48
а с трейтами что не так? (никогда на скале не писал)
Как HKT доедут до котлина, так сразу и узнаем :)

Даниил
29.01.2018
17:28:18
Как HKT доедут до котлина, так сразу и узнаем :)
Ну HKT наверное не доедут, а тайпклассы надеюсь доедут)

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
Quantum Harmonizer
29.01.2018
17:37:04
Это одну функцию и (что самое неудобное) без состояния.
охх, какие костыли нужны, чтобы состояние примешать. Композиция лучше

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
в Rust нет ООП, думаю, в этом дело
ну наследование, инкапсуляция и полиморфизм есть, а то что "классического" Java-like наследования нет - так и слава богу

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

Quantum Harmonizer
29.01.2018
17:39:16
Andrew
29.01.2018
17:39:25
хмм, а как это делается? (я бы сделал композицией)
https://docs.scala-lang.org/tour/traits.html Да собственно как-то так.

Даниил
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) можно объявлять статические методы в трейте

Страница 515 из 982