@kotlin_lang

Страница 619 из 982
Павел
04.04.2018
06:22:38
Парни, а есть кто считает что kodein говно и использует какие-то другие di?
Я использую спринг :) Но кодеин норм, просто не на скейле

Nikita
04.04.2018
06:26:38
Вроде уже обещали впилить в какой-то из очередных релизов, ждемс....
Уже нашел ответ. Джва года обещанного ждут. Ну или три)

Google
Даниил
04.04.2018
06:28:48
Это и есть DI
так он говорил «без DI-контейнера» а не «без DI»

Vladislav
04.04.2018
06:29:03
Ну тогда ок

Quantum Harmonizer
04.04.2018
06:51:08
Это и есть DI
Да, любая аггрегация предполагает DI (и появилась раньше этого термина). Исхожу из того, что люди так называют контейнеры.

Тимур
04.04.2018
07:36:30
Ой, arrayOfNulls(0)
да странно почему list.size() не передали вместо 0 недосмотрели или есть какой-то глубокий смысл?

Kirill
04.04.2018
07:51:24
да странно почему list.size() не передали вместо 0 недосмотрели или есть какой-то глубокий смысл?
Семантика джава апи. Пустой массив передаётся чтобы джава знала какой должен быть тип элементов

Quantum Harmonizer
04.04.2018
07:52:12
Да, это понятно, но это лишний объект и последующий рефлективный вызов. JVM умеет это оптимизировать, а вот умеет ли ART?..

Руслан
04.04.2018
07:55:49
Arrays of Wisdom of the Ancients https://shipilev.net/blog/2016/arrays-wisdom-ancients/#_empty_array_instantiation

Vladislav
04.04.2018
07:58:39
А зачем IDEA подсвечивает смарт касты? Выглядит как будто warning. Постоянно напрягаюсь

Valentin
04.04.2018
07:59:44
для кого-то смарт-каст - это недопустимый косяк

Vladislav
04.04.2018
08:01:25
дык, если явный каст напишешь - тогда другой ворнинг )

Quantum Harmonizer
04.04.2018
08:01:39
явный каст — недопустимый косяк

Valentin
04.04.2018
08:01:43
+

Руслан
04.04.2018
08:02:18
А зачем IDEA подсвечивает смарт касты? Выглядит как будто warning. Постоянно напрягаюсь
Чтобы было понятно что вот тут произошел смарт каст, конечно в самых простых случая наверно не сильно полезно, но с приходом контрактов будет очевиднее польза

Google
Vladislav
04.04.2018
08:02:21
в общем я у себя в подсветке загасил их, так код спокойнее выглядит

Valentin
04.04.2018
08:02:51
многие вообще все варны гасят - иногда откроешь чужой проект, и всё жёлтое

Quantum Harmonizer
04.04.2018
08:03:33
а некоторые их не видят)

Valentin
04.04.2018
08:04:29


Руслан
04.04.2018
08:06:14
многие вообще все варны гасят - иногда откроешь чужой проект, и всё жёлтое
Работает же! А жёлтое - это компилятор тупой, не понимает моего уровня

Как на котлине не используя рефлексию написать код с варнингами и чтобы он работал?

Тимур
04.04.2018
08:12:14
Семантика джава апи. Пустой массив передаётся чтобы джава знала какой должен быть тип элементов
Зачем массив передается понятно. Непонятно почему его сразу не делать нужного размера, чтобы потом не приходилось переаллоцировать заново.

Igor
04.04.2018
08:12:58
Сделай пул-реквест ?

Руслан
04.04.2018
08:13:32
variable shadowing
Принимается

Vladislav
04.04.2018
08:13:35
Кстати, про unchecked cast тут вопросик назрел. Если делаешь unchecked cast внутри лямбды, то @SuppressWarnings на методе не помогает. Что делать?

Quantum Harmonizer
04.04.2018
08:15:19
Зачем массив передается понятно. Непонятно почему его сразу не делать нужного размера, чтобы потом не приходилось переаллоцировать заново.
Мм, есть один вариант. В многопоточке можешь создать массив размером 200700, поток заснёт, из массива удалят 100500 элементов, поток проснётся и получит массив с хвостом из nullов.

Quantum Harmonizer
04.04.2018
08:21:34
Тимур
04.04.2018
10:41:39
а в чем разница между checkNotNull и requireNotNull? вроде одинаковые совсем что из них надо использовать?

Alexey
04.04.2018
10:47:03
По названию выглядит так, что один возвращает bool другой падает

Но нет ?

Google
Руслан
04.04.2018
10:48:41
Семантика-с

Разный смысл, разные эксепшены

Тимур
04.04.2018
10:51:02
ааа, вот теперь разглядел что они разные эксепшены кидают

а то сидел, смотрел сорцы и играл в игру: найдите отличия в этих двух картинках

Andrew
04.04.2018
10:52:21
статья в тему: https://blog.egorand.me/preconditions-kt-validate-your-kotlin/

Vladislav
04.04.2018
10:54:34
Народ, а никто не в курсе компилятор котлина когда нибудь научится делать оптимизации генерируемого кода? Вот например для такого: val a = b ?: { "hello" }() В данном случае можно полноценную лямбду не генерить, а он это делает.

Или это должно решаться на уровне ProGuard?

Kirill
04.04.2018
10:56:04
А зачем так писать? О_о

Bogdan
04.04.2018
10:56:18
Andrew
04.04.2018
10:56:24
> компилятор котлина когда нибудь научится делать оптимизации генерируемого кода? жирный наброс ? касательно конкретных оптимизаций, которых нету, но очень хочется видеть, сходи на kotl.in/issue а вообще есть run { ... }

Vladislav
04.04.2018
10:56:58
ну это просто пример, в котором лямбду можно опустить при компиляции и заменить на обычный if, который очевидно будет быстрее выполняться

Bogdan
04.04.2018
10:57:57
у меня вопрос по лучше



addInputVariable(InputVariable("in1")) - должен вызыватся на Engine

Andrew
04.04.2018
10:59:31
this@engine.addInputVariable пробовал?

Kirill
04.04.2018
10:59:33
this@

Quantum Harmonizer
04.04.2018
10:59:38
@DslMarker

Bogdan
04.04.2018
11:00:36
this@engine.addInputVariable пробовал?
вопрос в том что у меня вродебы this другой, `RuleBlock, в лямбе, или это заблуждения

Google
Andrew
04.04.2018
11:01:43
вопрос в том что у меня вродебы this другой, `RuleBlock, в лямбе, или это заблуждения
ну если у тебя ruleBlock принимает вторым параметром RuleBlock.(...) -> ..., то в этой лямбде this, конечно, будет типа RuleBlock

Bogdan
04.04.2018
11:01:44
там доступно несколько this'ов
а вот это немного плоховато, в итоге билдеры будут ефективней

Vladislav
04.04.2018
11:02:25
А зачем так писать? О_о
Можно усложнить: val objId = obj.id ?: { val obj = MyObject(); obj.prop = "someval"; repository.save(); obj.id } ()

Andrew
04.04.2018
11:02:37
а вообще кот прав, тебе доступны все this-ы, которые были по дороге, последний без метки.

Andrew
04.04.2018
11:03:22
Можно усложнить: val objId = obj.id ?: { val obj = MyObject(); obj.prop = "someval"; repository.save(); obj.id } ()
val objId = obj.id ?: run { val obj = MyObject(); obj.prop = "someval"; repository.save(); obj.id } Ты точно читаешь ответы? :)

> компилятор котлина когда нибудь научится делать оптимизации генерируемого кода? жирный наброс ? касательно конкретных оптимизаций, которых нету, но очень хочется видеть, сходи на kotl.in/issue а вообще есть run { ... }

Bogdan
04.04.2018
11:04:52
@Harmonizr не знаешь как избежать нескольких this

Quantum Harmonizer
04.04.2018
11:05:19
Bogdan
04.04.2018
11:05:32
Quantum Harmonizer
04.04.2018
11:05:36
@DslMarker
ну и вот

Bogdan
04.04.2018
11:05:50
ну и вот
думал про него, поробую

Quantum Harmonizer
04.04.2018
11:06:17
зачем вообще DSL? Там нельзя просто собрать граф объектов?

Bogdan
04.04.2018
11:08:40
зачем вообще DSL? Там нельзя просто собрать граф объектов?
да не просто хотелка, думаю без этого обойдусь

Vladislav
04.04.2018
11:08:52
run { }
run это не про то судя по описанию

Andrew
04.04.2018
11:09:48
Calls the specified function block and returns its result. Что значит не то? Ты же пытаешься описать блок (лямбду) и тут же вызвать её.

Google
Vladislav
04.04.2018
11:10:16
нужно вернуть либо само значение, либо вычислить его. Аналог Optional.orElseGet

Mikhail
04.04.2018
11:10:19
зачем вообще DSL? Там нельзя просто собрать граф объектов?
Ну Котлин же только для DSL и создали ;) LISP-style: сначала 20% времени пиши язык на котором твоя проблема решается строчкой "решить проблему", затем 80% времени отлаживай, затем 10% времени решай проблему

Andrew
04.04.2018
11:10:39
Ты издеваешься?

val objId = obj.id ?: run { val obj = MyObject(); obj.prop = "someval"; repository.save(); obj.id } Ты точно читаешь ответы? :)

Vladislav
04.04.2018
11:11:49
да точно, проглядел

Vladislav
04.04.2018
11:12:12
но изначальный вопрос был не про то как run позвать

Andrew
04.04.2018
11:14:22
Фух, я уже думал, в телеграме по-тихому ввели мьют и мне его тут повесили. По изначальному вопросу — ещё раз: компилятор котлина вполне себе умеет в оптимизации, если чего-то конкретного не хватает — можно заглянуть на багтрекер и либо проголосовать существующий фич-реквест, или завести новый, если ещё нету. Но в целом при наличии run { ... } нет смысла писать { ... } (), потому вряд ли кто-то этим будет заниматься ближайшее время при наличии более приоритетных задач.

sne18
04.04.2018
15:26:13
Внимание, москвичи! 27 апреля будет митап посвящённый Kotlin, в московском офисе JetBrains.

https://www.meetup.com/KotlinMoscow/events/249384155/

Dmitry
04.04.2018
15:28:33
О, у них офис в мск есть?

Valentin
04.04.2018
15:30:07
сейчас 15 attendees, завтра к вечеру 500

надо в лужниках собираться

Konstantin
04.04.2018
16:44:32
Это точно

Dumitru
04.04.2018
17:32:29
Я терпеть стал смотреть митапы по Котлину вместо сериалов )

Тимур
04.04.2018
17:43:33
О, у них офис в мск есть?
В Москве вся сила, брат!

Kirill
04.04.2018
17:46:47
В Москве вся сила, брат!
Сила вся в Питере и Мюнхене :)

sne18
04.04.2018
18:02:01
Вся сила в единстве

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