@kotlin_lang

Страница 389 из 982
DarkMentat
26.10.2017
17:40:50
норм

Quantum Harmonizer
26.10.2017
17:41:22
Давайте не порождать флуд. И, тем более, флуд стикерами.

Andrew
26.10.2017
17:41:29
Ай нид хелп. Есть интерфейс на джаве ( с 2 методами) Пытаюсь тестить (с мокито) private var processCallback: BusinessCallback? = null private val logic : BusinessLogic = mock { on { addListener(any()) } doAnswer { processCallback = it.getArgument<BusinessCallback>(0) } } Компилятор ругается на строчку processCallback = it.getArgument<BusinessCallback>(0) Ошибка: Expected a value of type Unit?

В соседнем тесте такая конструкция нормально работает

Google
Andrew
26.10.2017
17:44:01
Мэджик

Quantum Harmonizer
26.10.2017
17:44:14
Igor
26.10.2017
17:46:22
Наверное doAnswer последней строкой должен что-то возвращать, а у тебя там присвоение. Попробуй добавить явный Unit: … oAnswer { processCallback = it.getArgument<BusinessCallback>(0) Unit } …

Andrew
26.10.2017
17:47:11
По идее не должен. Метод addListener void

Igor
26.10.2017
17:50:27
Если это он https://github.com/nhaarman/mockito-kotlin/blob/master/mockito-kotlin/src/main/kotlin/com/nhaarman/mockito_kotlin/Mockito.kt#L105 то твоя лябда должна что-то возвращать, тк Котлин нет void, а = не считается за экспрешен возвращающий Unit

Andrew
26.10.2017
17:57:16
А, понял. А как создать пустой юнит?

Igor
26.10.2017
17:57:51
Unit это синглтон (object)

Andrew
26.10.2017
18:00:00
Спасибо

Gor
26.10.2017
19:05:20
Что думаешь?
Спасибо, теперь стало понятнее, но что будет если field2 не проходит валидацию и значения для него не существует? На сколько я знаю Delegates.notNull никак не может сказать заинитили его или нет(или написать).

Руслан
26.10.2017
19:06:05
ну можно использовать lateinit тогда у него можно узнать

Gor
26.10.2017
19:06:31
всегда можно напистаь своего делегата
примерно это и ждал услышать)

ну можно использовать lateinit тогда у него можно узнать
разве? там вроде уже с новой версии котлина такое можно, но не в текущей, сейчас проверю

Google
Руслан
26.10.2017
19:06:53
просто если ты сам объект строишь и проверяешь его то ты знаешь заинитил ли ты все поля или нет. вот если ты построение отдаешь на откуп кому-то третьему, типо юзера либы - тогда нужно конечно проверять

balolam
26.10.2017
19:06:57
примерно это и ждал услышать)
что совсем не сложно

Gor
26.10.2017
19:10:42
просто если ты сам объект строишь и проверяешь его то ты знаешь заинитил ли ты все поля или нет. вот если ты построение отдаешь на откуп кому-то третьему, типо юзера либы - тогда нужно конечно проверять
согласен, но ноявность самого мтеода isValid делает более очевидным работу самого класса, потому думаю все же попробую через делегат руками сделать

Fvre
26.10.2017
19:34:56
Добрый вечер, обновил студию теперь при попытке добавить addAll в ArrayAdapter<String> лист List<String> выпадает ошибка Error:(87, 33) Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: public fun <T> MutableCollection<in ???>.addAll(elements: Array<out ???>): Boolean defined in kotlin.collections public fun <T> MutableCollection<in ???>.addAll(elements: Sequence<???>): Boolean defined in kotlin.collections public fun <T> MutableCollection<in String>.addAll(elements: Iterable<String>): Boolean defined in kotlin.collections

как решить? раньше работало adapter.addAll(rubList!!.map { it.rubTitle } ) ,rubTitle String

Gor
26.10.2017
19:48:05
что совсем не сложно
честно говоря покопал и ничего лучше обсервабла из примера не нашел https://discuss.kotlinlang.org/t/how-to-know-if-a-not-null-variable-by-delegate-delegates-notnull-has-been-initialized/1542/2, но рефлексия наверное подождет пока что

Quantum Harmonizer
26.10.2017
19:49:57
Кажется, в 1.2 есть возможность получить делегата.

Gor
26.10.2017
19:51:20
Кажется, в 1.2 есть возможность получить делегата.
в 1.2 в лейтините есть подобный метод

Igor
26.10.2017
19:58:50
Может кто использовал kmongo - есть ли какой-то вменяемый способ используя его и jackson вытащить вложенные элементы документа?

snpefk
27.10.2017
07:03:57
Всем привет, есть тут Kotlin евангелисты, который мне могут пояснить за пару вопросов? 1. Property vs. Function - в доке сказано, что функцию можно заменить на свойство, если функция не выбрасывает Exception, имеет константную сложность и идемпотентно. Идиоматически ли тогда будет заменить функцию, допустим getSize() на свойство size, если оно не будет "returns the same result over invocations"? Или я сильно строго воспринял рекомендации? (Понимаю, вопрос уровня табы vs. пробелы, но все же хотелось бы узнать, как стоит писать правильно с точки зрения Kotlin). 2. Нигде не заметил в документации уточнений оптимизируются ли цепочки high-order функций при компиляции. Т.е. если вызывать list.filter { it > 10 }.map { element -> element * 2 } сколько раз будет выполнен полный проход по списку? Подозреваю, что один, но хотелось бы пруфов из доки/книг/выступлений/etc.

Sergey
27.10.2017
07:10:55
1. главное чтобы рандом твой size не возвращал, а показывал состояние обьекта на момент вызова 2. в твоем примере будет создана временная коллекция после filter

Vic
27.10.2017
07:12:21
Функц. методы над коллекциями не леневые, создают промежуточные коллекции. Используй sequence

Anton
27.10.2017
07:13:21
когда много айтемов

Vic
27.10.2017
07:18:14
Когда дорого. Обычно, не часто это требуется

snpefk
27.10.2017
07:19:35
Ну, это понятно, что на списке из 10 элементов я заморачиваться не буду.

Quantum Harmonizer
27.10.2017
07:25:00
Всем привет, есть тут Kotlin евангелисты, который мне могут пояснить за пару вопросов? 1. Property vs. Function - в доке сказано, что функцию можно заменить на свойство, если функция не выбрасывает Exception, имеет константную сложность и идемпотентно. Идиоматически ли тогда будет заменить функцию, допустим getSize() на свойство size, если оно не будет "returns the same result over invocations"? Или я сильно строго воспринял рекомендации? (Понимаю, вопрос уровня табы vs. пробелы, но все же хотелось бы узнать, как стоит писать правильно с точки зрения Kotlin). 2. Нигде не заметил в документации уточнений оптимизируются ли цепочки high-order функций при компиляции. Т.е. если вызывать list.filter { it > 10 }.map { element -> element * 2 } сколько раз будет выполнен полный проход по списку? Подозреваю, что один, но хотелось бы пруфов из доки/книг/выступлений/etc.
Я бы так сказал: свойство — это данные, функция — поведение.

Boris
27.10.2017
07:27:47
Я бы так сказал: свойство — это данные, функция — поведение.
Правда в котлине все скрыто за интерфейсом из методов, и данные могут быть не полями. Но в целом наверное лучше не скажешь

snpefk
27.10.2017
07:30:23
Функц. методы над коллекциями не леневые, создают промежуточные коллекции. Используй sequence
Спасибо за уточнение. Я почему-то считал, что high-order функции работают, как синтаксический сахар для for и при компиляции ужимаются, по возможности, в один цикл (без промежуточных коллекций и лишних обходов). Теперь стало все стало ясно.

Google
snpefk
27.10.2017
07:36:10
Gleb
27.10.2017
07:38:25
1. главное чтобы рандом твой size не возвращал, а показывал состояние обьекта на момент вызова 2. в твоем примере будет создана временная коллекция после filter
1. А если мой класс - это абстракция над какой-нибудь сетевой штукой и вызов size может занять некоторое неконстантное время, тут стоит использовать проперти, или лучше использовать функцию?

Eugeny
27.10.2017
08:22:05
как котлин?:) хорош?)
как будто ехал на вонючем запоре и пересел на сверкающий феррари именно такие впечатления с перепрыга с java7

Anton
27.10.2017
08:23:19
ну начинается

Eugeny
27.10.2017
08:23:38
так ну правда же

Anton
27.10.2017
08:23:40
а че на скалу не пересел пару лет назад

раз джава такая вонючая

Eugeny
27.10.2017
08:24:05
так исторически слежалось

Eugeny
27.10.2017
08:25:38
Точная аналогия, как раз и расход топлива возрос
дефайн топливо. Если время компиляции, ну максимум процентов на 10 а если читаемость, время написания, стоимость написания, то все лучше

Eugeny
27.10.2017
08:25:59
inline и нормально

Anton
27.10.2017
08:26:03
производительность котлина не хуже джавы

просто смешно когда говорят что джава уж полное дерьмо

Илья
27.10.2017
08:26:14
А еще запором может каждый управлять, а вот феррари нет

Eugeny
27.10.2017
08:26:44
просто смешно когда говорят что джава уж полное дерьмо
джава не полное дерьмо. Каждый день пишу на ней. Язык хороший, но императивная седьмая уже насквозь устаревшая

проекты с более древней джавой я и не говорю

Google
Anton
27.10.2017
08:27:25
а на какую платформу пишешь?

Eugeny
27.10.2017
08:27:26
А еще запором может каждый управлять, а вот феррари нет
разница - 2 недели неспешного решения kotlin koans. Порог входа очень низок, если ты уже java developer

Anton
27.10.2017
08:27:27
с 7

Eugeny
27.10.2017
08:27:44
серверная разработка заднего конца

Илья
27.10.2017
08:28:10
разница - 2 недели неспешного решения kotlin koans. Порог входа очень низок, если ты уже java developer
Ну вот, за две недели можно много полезных фич делать, а тут надо разраба обучать при передаче проекта

Anton
27.10.2017
08:28:26
а почему нельзя на 8-9 перейти? вот в андроиде ест ьобьективная причина

а на бекенде с чем связано?

я думал у джавы супер интероп с пред версиями

роу типы всякие тому подтверждение

Илья
27.10.2017
08:29:03
Ну джава 8 не дает нуллабилити, например

И прочие фичи котлина

Eugeny
27.10.2017
08:29:20
серьезно? 2 недели это ничего. Зато повышенный выхлоп в читаемости, скорости написания и более безопасный с точки зрения код

а вот если разработчик принципиально не хочет учить ничего нового, то это уже вопрос к самому разработчику

Anton
27.10.2017
08:29:56
я имею в виду почему с 7 не перейти на 8 которая уже приятная

Илья
27.10.2017
08:29:58
Безопасный только при прямых руках, а с прямыми руками и на джаве безопасно люди пишут

Eugeny
27.10.2017
08:30:40
а почему нельзя на 8-9 перейти? вот в андроиде ест ьобьективная причина
миллиард серверов без виртуализации с 7 джавой в продакшене, которые никто не хочет обновлять докерить тоже - только в CI и CD до прода есть докер

банк, фиг ли

лан, пора бежать, всем спасибо за срач :)

Anton
27.10.2017
08:31:10
тоесть перейти на котлин намного легче чем поднять версию джавы?

Google
Eugeny
27.10.2017
08:35:50
тоесть перейти на котлин намного легче чем поднять версию джавы?
Да. Опсам не нужно будет работать, чего они делать в принципе не хотят

Даже секьюрити апдейты не ставите?
Не знаю. Но честно не думаю

Anton
27.10.2017
08:36:13
странный у вас банк))

Илья
27.10.2017
08:36:19
Anton
27.10.2017
08:36:21
на безу пох, опсы не хотят работать))

балаган))

Sergii
27.10.2017
08:37:21
devops, это когда сами и девелопят ;) у вас похоже обычные админы

Eugeny
27.10.2017
08:38:07
Поэтому я и сказал "опсы"

Девопс у нас до прода

Boris
27.10.2017
09:08:41
не смотря на все совместимости, проект на котором я сейчас работаю, работает на 7 и не собирается на 8 и не стартует

так что для больших проектов часто всё не так просто

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