@kotlin_lang

Страница 786 из 982
Egor
01.08.2018
09:20:12
А, ну да

ЧО, ПАЦАНЫ, КОГДА ТАМ KOTLIN NATIVE ЗАРЕЛИЗИТСЯ?

Igor
01.08.2018
09:20:30
Что там есть такого из фич, что есть в котлине, например
Кстати главная фича 2.0 - там убрали new оператор. Прям как в Котлине ?

Vladimir
01.08.2018
09:20:35
Что там есть такого из фич, что есть в котлине, например
Интереснее то, что там есть, чего в котлине нет?

Google
Pavel
01.08.2018
09:22:28
Igor
01.08.2018
09:22:33
Интереснее то, что там есть, чего в котлине нет?
Кроссплатформенный UI на мобилках ?‍♀

Mikhail
01.08.2018
09:22:35
кстати, а значок пайпа |> случаем не из F#?

Igor
01.08.2018
09:23:27
кстати, а значок пайпа |> случаем не из F#?
Скорее всего окамла, а может ещё раньше был

Vladimir
01.08.2018
09:23:49
оператор cascade, mixins
Ок, надо будет глянуть

Mikhail
01.08.2018
09:24:22
кажется, там (в F#) приоритет оператора определяется по первому символу значка

Pavel
01.08.2018
09:24:25
Ок, надо будет глянуть
ну и dynamic упоминали выше

Vladimir
01.08.2018
09:24:37
Кроссплатформенный UI на мобилках ?‍♀
Ну это уже относится не к языку

Andrew
01.08.2018
09:25:23
Ну это уже относится не к языку
Ну это всё-таки относится к технологическому стеку и влияет на выбор языка ?

Mikhail
01.08.2018
09:26:03
оператор cascade, mixins
лол, так cascade это же apply

Egor
01.08.2018
09:26:20
лол, так cascade это же apply
Удобнее писать

+ не возникает проблем с выведением типов

Mikhail
01.08.2018
09:26:53
а какие проблемы у apply?

Google
Egor
01.08.2018
09:27:14
Да тут выше как-то раз была история

Vladimir
01.08.2018
09:27:23
Ну это всё-таки относится к технологическому стеку и влияет на выбор языка ?
Согласен, но то, что Google планирует построить новый UI-фреймворк или ОС на нём, не делает его автоматически хорошим, удобным или подходящим для этого.

Andrew
01.08.2018
09:28:16
Согласен, но то, что Google планирует построить новый UI-фреймворк или ОС на нём, не делает его автоматически хорошим, удобным или подходящим для этого.
Народу флаттер нравится ¯\_(ツ)_/¯ А выбирать другой язык к этому фреймворку не выйдет. Каждому своё же.

Egor
01.08.2018
09:29:03
а какие проблемы у apply?
fun getFragment(state: Int): Fragment = when (state) { 1 -> Type1Fragment() 2 -> Type2Fragment() else -> Type3Fragment() }.apply { /* log */ } Компилятор не мог вывести Fragment, выводил Any

Egor
01.08.2018
09:30:37
В оригинале вообще был also, но у них все равно контракт почти одинаковый

Mikhail
01.08.2018
09:31:07
а что в логе?

ну also так-то поидиоматичнее тут будет, если только логирование, да

*полез в REPL*

Egor
01.08.2018
09:32:53
Да в логе ничего особенного, просто что-то вроде Timber.i("chosen fragment is: %s", it.toString()) Смысл в том только, что без экстеншена он тип нормально вывел, а с экстеншеном - нет

Quantum Harmonizer
01.08.2018
09:33:42
то же самое, например, если пишешь nullableMap ?: HashMap().also { nullableMap = it }

Egor
01.08.2018
09:34:30
Quantum Harmonizer
01.08.2018
09:34:43
знать бы, чем заменить её

Vladimir
01.08.2018
09:37:26
Quantum Harmonizer
01.08.2018
09:37:42
lazy не зайдёт?
не, наоборот, хочу не выделять объект, пока не нужен

Mikhail
01.08.2018
09:38:02


то же самое, например, если пишешь nullableMap ?: HashMap().also { nullableMap = it }
если дело в интеропе замени HashMap на mutableMap(), должно получиться

dimiii
01.08.2018
09:39:59
*А какой тип выводит компилятор в идее для it в println(it)?

Google
Egor
01.08.2018
09:40:57
В общем, в тот раз все закончилось именно тем, что никто так и не разобрался, почему оно ломалось

Но может быть из-за интеропа с джавой, да

Quantum Harmonizer
01.08.2018
09:43:24
если дело в интеропе замени HashMap на mutableMap(), должно получиться
причём тут интероп и почему для mutableMap должно нормально вывестись?

Quantum Harmonizer
01.08.2018
09:54:19
Dmitry
01.08.2018
10:09:18
ещё 1 вопрос, а вот как мне при top-level functions, найти все методы которые описаны в 1 файле получается, ну в Java я мог дёрнуть класс и посмотреть, а здесь как?

Dmitry
01.08.2018
10:10:11
а из котлина как?

из Java то понятно...

Quantum Harmonizer
01.08.2018
10:11:04
можно, конечно, Class.forName...

Dmitry
01.08.2018
10:12:02
можно, конечно, Class.forName...
блин..как то стремно... а другой нету возможности? :-(

Celt
01.08.2018
10:12:38
Опять?

Pavel
01.08.2018
10:13:57
В каком смысле найти? В рантайме через reflection?
Я так понимаю речь про интелисенс

Mikhail
01.08.2018
10:14:12
Если файл называется Foo.kt, то из джавки он выглядит как класс FooKt

Dmitry
01.08.2018
10:14:54
ну имя файла вводишь и тыкаешь
ну это ж.. плохо, если таки классов будет много... то запутаться как нефиг нафиг

просто в Java стильные классы они как разграничиваются по зоне ответственности

тут все в 1 куче будет и концов не соберёшь

Google
Quantum Harmonizer
01.08.2018
10:15:39
а, то есть вопрос не про рефлекшен?)

Dmitry
01.08.2018
10:16:01
возможно криво задал

Dmitry
01.08.2018
10:17:01
Для ограничения скоупа - компаньоны :)
я просто раньше писал на пыхе и там тоже так можно писать... и обычно такой функциональный стиль приводил к аду просто

по этому немного скептически отношусь

если есть интересные примеры кто так уже писал.... можете скинуть?

типо open source на котлине

Admin
ERROR: S client not available

Pavel
01.08.2018
10:18:05
по этому немного скептически отношусь
У тебя есть варианты как это организовать. Выбирай подходящий и все будет хорошо :)

Dmitry
01.08.2018
10:18:06
* процедурный
сори, ты прав

Quantum Harmonizer
01.08.2018
10:18:47
если есть интересные примеры кто так уже писал.... можете скинуть?
ну типа вот https://github.com/Miha-x64/reactive-properties/blob/master/properties/src/main/kotlin/net/aquadc/properties/inlineExtensions.kt

Dmitry
01.08.2018
10:19:20
ну тут экстешен, а если я не могу применить ее как экстешен

Quantum Harmonizer
01.08.2018
10:21:12
а если просто object юзать это тоже плохо?
их неудобно использовать из котлина + там появляется реальный объект

Andrew
01.08.2018
10:21:29
ну тут экстешен, а если я не могу применить ее как экстешен
Слушай, ну классы же ты как-то находишь. Чем функции отличаются в этом контексте?

Dmitry
01.08.2018
10:23:13
Слушай, ну классы же ты как-то находишь. Чем функции отличаются в этом контексте?
ну в java я могу сделать так дернуть к примеру Utils. и посмотреть какие там методы есть

а так мне придется лезть внутрь

Google
Dmitry
01.08.2018
10:23:54
я возможно бред несу... я не силен в котлине

Andrew
01.08.2018
10:24:59
а так мне придется лезть внутрь
Я про сами классы. Откуда ты знаешь, где и какие классы есть? Вот оттуда же ты в котлине кроме классов найдёшь функции. Обычно это документация :)

dimiii
01.08.2018
10:26:06
тут все в 1 куче будет и концов не соберёшь
<spoiler>не надо валить в кучу</spoiler>

Andrew
01.08.2018
10:26:31
а так мне придется лезть внутрь
В крайнем случае чисто из IDE можно написать имя пакета и смотреть список функций там. Потом нормальный импорт посредством Alt+Enter сделать. Но мне ни разу пока не приходилось чёт так искать.

Dmitry
01.08.2018
10:26:34
<spoiler>не надо валить в кучу</spoiler>
вооо а как это сделать красиво в котолине?

Andrew
01.08.2018
10:26:51
Dmitry
01.08.2018
10:27:56
блин ну Java я делю по классу и всегда по нему могу написав его в коде быстро пройтись по методам

а если делать top-level будет каша всегда

и только лезть в сам класс и смотреть что там есть

Pavel
01.08.2018
10:28:58
а если просто object юзать это тоже плохо?
да ничего плохого, язык позволяет, значит можно. Просто top level и extensions это более идеоматично и стоит отдавать им предпочтения, но если хоется object declaration - то пожалуйста, никто не мешает.

Dmitry
01.08.2018
10:29:07
и не дай бог нейминг похожий... то вообще жопа

Andrew
01.08.2018
10:29:48
а если делать top-level будет каша всегда
Ещё раз а) документация б) список функций в пакете в) действительно заглянуть в сорцы Ты попробуй сначала поработать, к примеру, со стандартной библиотекой, которая во многом так сделана, а потом критикуй :)

Pavel
01.08.2018
10:30:00
а если делать top-level будет каша всегда
зависит. Если utils связаны с конкретным классом - экстеншены ни чем не отличаются, и интелисенс получешь прямо на объекте.

Andrew
01.08.2018
10:31:11
не не, я просто пытаюсь понять, возможно не правильно выражаюсь
Для того, чтобы проникнуться, надо потыкать. На словах тебе этого никто не объяснит.

dimiii
01.08.2018
10:31:12
ну top level хорошо когда extensions функции? или не обязательно?
Extension methods на не топ-левеле лексически замкнуты (невидимы извне), так что - только топ левел

Pavel
01.08.2018
10:32:21
@dmitry_konurov плюс смотри пояснение в одкументации https://kotlinlang.org/docs/reference/classes.html последний пункт "Companion objects"

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