
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 и не стартует
так что для больших проектов часто всё не так просто