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 тогда у него можно узнать
balolam
26.10.2017
19:06:18
Gor
26.10.2017
19:06:31
Google
Руслан
26.10.2017
19:06:53
просто если ты сам объект строишь и проверяешь его то ты знаешь заинитил ли ты все поля или нет. вот если ты построение отдаешь на откуп кому-то третьему, типо юзера либы - тогда нужно конечно проверять
balolam
26.10.2017
19:06:57
Gor
26.10.2017
19:10:42
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
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
Quantum Harmonizer
27.10.2017
07:28:15
Boris
27.10.2017
07:28:46
snpefk
27.10.2017
07:30:23
Google
Boris
27.10.2017
07:33:55
snpefk
27.10.2017
07:36:10
Igor
27.10.2017
07:36:32
Gleb
27.10.2017
07:38:25
Igor
27.10.2017
07:40:13
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
так исторически слежалось
Илья
27.10.2017
08:25:00
Eugeny
27.10.2017
08:25:38
Илья
27.10.2017
08:25:50
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
Anton
27.10.2017
08:27:27
с 7
Eugeny
27.10.2017
08:27:44
серверная разработка заднего конца
Илья
27.10.2017
08:28:10
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
банк, фиг ли
лан, пора бежать, всем спасибо за срач :)
Anton
27.10.2017
08:31:10
тоесть перейти на котлин намного легче чем поднять версию джавы?
Илья
27.10.2017
08:32:52
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 и не стартует
так что для больших проектов часто всё не так просто