
Va
30.01.2018
23:01:26

Руслан
30.01.2018
23:03:11
А вот пример отличий junit 5.0 - 5.1 с точки зрения котлина https://github.com/Heapy/yml-ical/commit/5c559932947ba2c1fa2fd2d7ca647eb6bf8f941f

Dibro
30.01.2018
23:03:40

Google

Александр
30.01.2018
23:04:13
слушал доклад где поясняли почему самый правильный ооп это clojure

Ivan
30.01.2018
23:06:05
https://github.com/oleksiyp/mockk
а я давно слышал, что как-то немного корячили компилятор, чтобы он все классы делал открытыми, чтобы можно было и спринг и мокито, и у меня было ощущение что таки реализовали это, я чушь несу или правда было?
интересно было бы послушать

Александр
30.01.2018
23:06:37

Руслан
30.01.2018
23:06:46

Александр
30.01.2018
23:07:02
если не найдете за 20 минут - кину, пока читаю историю всех чатьв

Ivan
30.01.2018
23:07:04

Dibro
30.01.2018
23:08:25
и до "более-менее" готовой там довольно далеко

Ivan
30.01.2018
23:09:18

Руслан
30.01.2018
23:10:56

Google

Ivan
30.01.2018
23:12:41

Руслан
30.01.2018
23:13:14
Я делаю Interface и DefaultInterface

Ivan
30.01.2018
23:13:29
youtube fpconf 2017
https://www.youtube.com/playlist?list=PLY3spNmwoSY-4hso5zlqzv7IkYlscw6jw
чёт тут по clojure не грепается

Руслан
30.01.2018
23:14:21

Александр
30.01.2018
23:14:21
вот эта, но там по чуть чуть набрасывают на вентилятор

Ivan
30.01.2018
23:14:52

Badya
30.01.2018
23:23:42
Шарпы какие-то получаются с этим вот I)

Руслан
30.01.2018
23:25:08
та ну всё-равно как-то...
кстати, а почему тогда не префикс I
Ну как показала практика это самое логичное именование, бывали случаи когда реально появлялась альтернативная имплементация и вот она называлась например AmazonInterface. Ну и получалось что есть Interface, DefaultInterface и AmazonInterface. Намного понятнее красивее чем Impl имхо

Badya
30.01.2018
23:25:08

Ivan
30.01.2018
23:51:42


Grushin
31.01.2018
05:08:24
Grushin Sergey Work:
народ, в процессе реализации была задача. пройти коллекцию элементов и поменять один булин у одного элемента этой коллекции + получить индекс. я реализовал так
data.indexOfFirst { it.isNotesExpand }.let {
if (it != -1) {
data[it].isNotesExpand = false
notifyItemChanged(it + 1)
}
}
можно ли его сократить?)

Igor
31.01.2018
08:49:44

Александр
31.01.2018
08:52:22

Konstantine
31.01.2018
09:49:56
Ребят, можно как-то сахарно проверить массив на какое-то условие? Например массив стрингов на то, что все строки в нем начинаются с символа а

Kira
31.01.2018
09:51:01
По памяти

Konstantine
31.01.2018
09:51:34
matchAll нет?
Возможно, сейчас нет возможности проверить, но посмотрю, спасибо.

Google

Boris
31.01.2018
10:05:03

Konstantine
31.01.2018
10:05:28

Vitalii
31.01.2018
10:08:56
Ребят, кто что скажет по поводу такого кодстайла (пример так, либо с проверкой на что-либо ещё), когда первая часть условия — на одной строке с сигнатурой (без переноса, телеграм сам перенёс, конец сигнатуры на else {):
fun someFunction(param: Int) = if (param != 42) someFunction(param+1) else {
// other code
}
Ну и аналогичное с when: насколько с этим неудобно работать/неудобно читать остальным?

Илья
31.01.2018
10:10:08
но ваще у меня попоболь по поводу inline if
и скобки вокруг someFunction() бы сделал
тогда сразу тебе читаемость
fun someFunction(param: Int) =
if (param != 42) {
someFunction(param+1)
} else {
// other code
}
this

Andrew
31.01.2018
11:30:24
это привычка, а не читаемость ;)

Илья
31.01.2018
11:31:24
либо я тебя не понял, либо такое
if (someBooleanValue) {
foo = "bar"
}
невалидно
а оно валидно

Andrew
31.01.2018
11:33:14
вот такое не валидно:
foo = if(bool) { "bar" }

Илья
31.01.2018
11:35:03
если твой иф возвращает что-то отличное от Unit то да

Andrew
31.01.2018
11:35:08
Друг, ты бы перестал вклиниваться в диалоги, не читая контекст. Я именно это и утверждаю.

Илья
31.01.2018
11:36:26
канальчик, а никто не вкуривал как под капотом работает ретрофит? – мне интересная та часть где я ему говорю что вот мол тебе GsonConverter и он начинает мне генерить соответствующие объекты?

Bogdan
31.01.2018
11:36:27
ок

Илья
31.01.2018
11:36:34
мне именно TypeAdapter интересен
хотя это андроид и гипотетически я ошибся чатиком

Google

Quantum Harmonizer
31.01.2018
11:45:38

Виталий
31.01.2018
12:45:54
layer0[2].fill(Tile(atlas.rndTile), 0, layer0[2].size)
при такой заливке Tile(atlas.rndTile) выполняется всего один раз, как сделать что бы Tile(atlas.rndTile) повторился layer0[2].size раз ?
или каким другим путем заполнить второй уровень массива
в идеале было бы не плохо добавить IntRange в индексы, типа:
val start = 0
val end = layer0[3].size
layer0[3][start..end] = Tile(atlas.rndTile)
?

Quantum Harmonizer
31.01.2018
12:59:36
Я вот не особо понял, что требуется сделать.

Виталий
31.01.2018
13:00:21
заполнить второй уровень массива layer0[N][N2]

Quantum Harmonizer
31.01.2018
13:02:32
fill же заполняет всё от layer0[2][0] до layer0[2][size], что теперь нужно сделать?

Виталий
31.01.2018
13:03:25
Tile(atlas.rndTile) при fill выполняется только один раз, а нужно size раз
так как там береться рандомный регион текстуры
то есть если мне все заолнить null то все ок, но если разными объектами класса Tile то чет не канает

Quantum Harmonizer
31.01.2018
13:07:01
Вообще fill не подходит.
val array = layer0[2]
for (i in array.indices) array[i] = Tile(...)

Виталий
31.01.2018
13:07:44
хотел как короче :( в одну строку
то есть без for

Quantum Harmonizer
31.01.2018
13:09:02
inline fun <T> Array<T>.fill(getT: (Int) -> T) {
for (i in indices) this[i] = getT(i)
}

Виталий
31.01.2018
13:13:06
круто ))
спасиб)
а inline это хорошо или плохо ?

Quantum Harmonizer
31.01.2018
13:17:52

Марат
31.01.2018
13:18:16
lazy умеет принимать параметры?

Google

Виталий
31.01.2018
13:18:27
https://kotlinlang.ru/docs/reference/inline-functions.html
почитал и не понял, палка о двух концах

Quantum Harmonizer
31.01.2018
13:18:50

Виталий
31.01.2018
13:19:17
может повысить производительность, но и повысить кол-во сгенерированного кода
а кто такие разумные пределы... не совсем ясно

Quantum Harmonizer
31.01.2018
13:22:03

Виталий
31.01.2018
13:22:55
Модификатор inline влияет и на функцию, и на лямбду, переданную ей: они обе будут встроены в место вызова.
тут не понял, что значит встроены ? каждое обращение будет генериться код ?

Quantum Harmonizer
31.01.2018
13:23:33

Виталий
31.01.2018
13:24:50
а в каком месте постоянная генерация кода повысит производительность ? мне кажеться пусть функция торчит заранее в памяти и обращаться к ней

Kira
31.01.2018
13:25:55
Так вроде при компиляции код из метода вставят по месту использования и всё

Quantum Harmonizer
31.01.2018
13:26:01