
Nikita
26.09.2017
09:46:09
помог объект InvokationOnMock и метод doAnswer который его принимает. Я уверен есть и дургие способы, но это окалаось именно то что нужно бля вызова определенной лямбды/коллбека для замоканного дела
и InvokationOnMock одинаково работает как для лямбд, так и для классических коллбеков

Quantum Harmonizer
26.09.2017
10:03:53

Nikita
26.09.2017
10:04:47

Google

Quantum Harmonizer
26.09.2017
10:05:10
Более того, лямбды Java 8 тоже ведут себя как анонимные классы, просто превращение из метода в класс происходит в рантайме.

Nikita
26.09.2017
10:06:51
а то kotlin
но это уже кишки в которых, на самом деле надо бы по хорошему разобраться

Dmitry
26.09.2017
10:08:23
а то kotlin
который таки компилируется в байткод 1.6 или 1.8 (на выбор)?

Quantum Harmonizer
26.09.2017
10:08:44
насколько я помню, сейчас для обеих версий получаются анонимные классы

Nikita
26.09.2017
10:09:11

Quantum Harmonizer
26.09.2017
10:09:58

Nikita
26.09.2017
10:10:16

Quantum Harmonizer
26.09.2017
10:10:49

Nikita
26.09.2017
10:13:39
kotlin/jvm/functions/Function1 - хм

Google

Quantum Harmonizer
26.09.2017
10:14:10
это функциональный интерфейс Котлина, их таких — 23 штуки

Nikita
26.09.2017
10:15:00
вообще выглядит интересно
LINENUMBER 209 L10
NEW WorkerCardPresenter$reserveBadCaseUser$1
DUP
ALOAD 0
INVOKESPECIAL WorkerCardPresenter$reserveBadCaseUser$1.<init> (LWorkerCardPresenter;)V
CHECKCAST kotlin/jvm/functions/Function1
L11
1 - это судя по всему сгненерированный в рантайме класс

Quantum Harmonizer
26.09.2017
10:16:41
Почему же в рантайме?

Nikita
26.09.2017
10:16:49

Dmitry
26.09.2017
10:16:49
? я чет не понимаю, или как может фраза "сгенерированный в райнтайме" сочетаться с просмотром байткода от компилятора?

Nikita
26.09.2017
10:17:10

Dmitry
26.09.2017
10:18:16
Если через Tools - Kotlin - Show bytecode (и затем decompile) смотреть, то в том же файле и будет описан данный анонимный класс

Quantum Harmonizer
26.09.2017
10:18:47

Nikita
26.09.2017
10:23:17
студия после декомпиляции байт кода в java даже об этом предупреждает

Quantum Harmonizer
26.09.2017
10:24:11
хотя на деле они нужны

Nikita
26.09.2017
10:24:37
хм
я нашел эти 23 метода
что будет если использовать функцию с 23 аргументами?
да и...почему ограничение на 22 а не например 10

Quantum Harmonizer
26.09.2017
10:26:41

Google

Quantum Harmonizer
26.09.2017
10:26:52

Nikita
26.09.2017
10:27:11
ох уж этот сахар

Dmitry
26.09.2017
10:29:45

Quantum Harmonizer
26.09.2017
10:33:08
https://youtrack.jetbrains.com/issue/KT-13764
Кто-нибудь может мне пояснить, как они собираются избавиться от 23-х классов? https://github.com/JetBrains/kotlin/blob/master/spec-docs/function-types.md

Dmitry
26.09.2017
10:39:09

Руслан
26.09.2017
10:42:26

Quantum Harmonizer
26.09.2017
10:43:13
invokedynamic?
Так эта инструкция о другом. И она пришла, кажется, в байт-коде версии 1.7.

Руслан
26.09.2017
10:51:13
ну почему, лямбды так работают в джаве
у тебя вместо аннонимного класса, прям в байткоде синтетический метод
это вроде прям то что и нужно, понятно что на андроиде это работать не будет, но есть же и другие таргеты для котлин байткода

Quantum Harmonizer
26.09.2017
10:57:12

Руслан
26.09.2017
11:02:02
Хм, так они не отказываются на JVM от Function0-22
Это для других языков можно просто иметь виртуальные интерфейсы только в компиляторе, а вот для джавы будут эти интерфейсы + FunctionN с vararg

Quantum Harmonizer
26.09.2017
11:03:23
а, ок

Руслан
26.09.2017
11:04:01
> On JVM, introduce Function0..Function22, which are optimized in a certain way, and FunctionN for functions with 23+ parameters. When passing a lambda to Kotlin from Java, one will need to implement one of these interfaces.
> Introduce a physical class Function and unlimited number of fictitious (synthetic) classes Function0, Function1, ... in the compiler front-end

Quantum Harmonizer
26.09.2017
11:04:57
Но вроде теперь понял.

Igor
26.09.2017
11:06:05
А в чем профит безлимитного кол-ва аргументов в методе?

Google

Quantum Harmonizer
26.09.2017
11:06:34

Konstantin
26.09.2017
11:23:31
всем привет) только начал изучать котлин. Вопрос касается использования языка на андроид. В проекте использую kotlin-android-extensions для того чтобы можно обращаться на прямую ко вьхам. На textview хорошо работает, но на таких элементах как recyclerview и swipe refresh layout крашится кто знает в чем может быть дело?

Anton
26.09.2017
11:24:04
а лог не хочешь показать

Михаил
26.09.2017
11:24:39

Konstantin
26.09.2017
11:24:55

Anton
26.09.2017
11:25:14
отлично видно)
ну ищи где нулл)

Quantum Harmonizer
26.09.2017
11:25:50

Konstantin
26.09.2017
11:26:30
дык нуль это recycler view которые не смог с инфлейтится

Igor
26.09.2017
11:26:35
Кажись это как-то связано с тем что код в фрагменте (но это не точно)

Konstantin
26.09.2017
11:27:08
ага в фрагменте. но с текствью то во фрагменте все хорошо работает
у меня и kotterknife также валился
именно recycler view, а вот с текствью все ок

Quantum Harmonizer
26.09.2017
11:28:31

Igor
26.09.2017
11:28:36

whalemare
26.09.2017
11:28:38
Может ты просто не из той view берешь?

Konstantin
26.09.2017
11:31:44
верстка https://pastebin.com/9eru510j
фрагмент https://pastebin.com/x7gHrdTm

Quantum Harmonizer
26.09.2017
11:36:18
очевидно, ни ресайклера, ни любых других вьюшек во фрагменте на тот момент ещё нет
Откуда в Котлин-коде взялись аннотации @Nullable?

Google

Konstantin
26.09.2017
11:37:49
http://prntscr.com/gpv3nm
если так сделать то все равно крашится

Quantum Harmonizer
26.09.2017
11:38:13

Konstantin
26.09.2017
11:38:29
import android.support.annotation.NonNull
import android.support.annotation.Nullable
в котлин не принято ставить аннотации?

Igor
26.09.2017
11:39:05

Михаил
26.09.2017
11:39:10
Из типа итак понятно

Maxim
26.09.2017
11:39:29

Михаил
26.09.2017
11:40:17
Самое забавное что на скрине @NonNull ViewGroup?

whalemare
26.09.2017
11:40:46

Quantum Harmonizer
26.09.2017
11:40:58
нуллабельный LayoutInflater — зачем так жить?

whalemare
26.09.2017
11:41:23
Без нуллабельного любой дурак может

Konstantin
26.09.2017
11:41:40
оуу все заработало)
спасибо)
http://prntscr.com/gpv6q7
вот же аннотации

Quantum Harmonizer
26.09.2017
11:45:16

Konstantin
26.09.2017
11:47:09
аа, вообщем если параметр Nullable то ставим вопрос в конце если не нуль то ничего?

Quantum Harmonizer
26.09.2017
11:51:57

Konstantin
26.09.2017
11:52:10
супер, спасибо еще раз)