
Todor
04.02.2017
21:38:46
да, я Build я уж понял
но тут все равно беда
@korotovskii

Dmitrii
04.02.2017
21:39:06
Я в котлине нихуя не секу )

Todor
04.02.2017
21:40:21
таже джава ведь)

Google

Ivan
04.02.2017
21:41:17
так написано же
тип не тот

Андрей
04.02.2017
21:42:35
а зачем через фигурные скобки добавлять? через круглые нужно

Quantum Harmonizer
04.02.2017
21:43:49
^ фигурные — это тело лямбды, они нужны были бы если бы тело интерцептора писалось прямо на месте

Todor
04.02.2017
21:43:55
@kaytert так а как решить же?

Quantum Harmonizer
04.02.2017
21:44:29

Todor
04.02.2017
21:45:12
@Harmonizr спасибо, получилось
автокомплит поставил фигурные скобки и все
@Harmonizr а как глянуть чем является лямбда и что она отдает в котлине? чет не могу понять какой хоткей или как

Андрей
04.02.2017
21:45:54
автокомплит предлагает на выбор несколько вариантов. ты сам выбрал не тот

Quantum Harmonizer
04.02.2017
21:46:45
а вообще, вот :)
OkHttpClient.Builder()
.addInterceptor(HttpLoggingInterceptor()
.apply { level = HttpLoggingInterceptor.Level.BODY })

Todor
04.02.2017
21:51:28
@Harmonizr а то, что в жаве и котлине по нажатию ctrl(cmd)+p в методе, он показывает входящие параметры

Quantum Harmonizer
04.02.2017
21:52:44

Google

Quantum Harmonizer
04.02.2017
21:53:26
Иногда мучился, не мог вернуть эту подсказку)

Ivan
04.02.2017
21:54:25

Todor
04.02.2017
21:55:38
@Harmonizr та и в джаве, когда хоть с лямбдой хоть без
если я, допустим onClick() реализую, то начинаю писать new View.OnCl..() дальше студия сама все дописывает и я понимаю с каким обьектом работаю дальше внутри метода onClick()
как с этой лямбдой в котлине работать?)

Ivan
04.02.2017
21:55:59
научится и будет подставлять

Todor
04.02.2017
21:56:09
@Harmonizr @kaytert хоткеи прекрасная вещь, парни :)
@kaytert это, разве дело в аннотациях, то, что я описал?

Ivan
04.02.2017
21:56:53

Quantum Harmonizer
04.02.2017
21:57:21

Ivan
04.02.2017
21:57:26
вот

Quantum Harmonizer
04.02.2017
21:57:55

Ivan
04.02.2017
21:58:27
Причём здесь вообще?
@Harmonizr та и в джаве, когда хоть с лямбдой хоть без
если я, допустим onClick() реализую, то начинаю писать new View.OnCl..() дальше студия сама все дописывает и я понимаю с каким обьектом работаю дальше внутри метода onClick()
как с этой лямбдой в котлине работать?)

Quantum Harmonizer
04.02.2017
21:58:45
И где тут аннотации?

Ivan
04.02.2017
21:59:08

Quantum Harmonizer
04.02.2017
21:59:29
Так это ты IntDef заскринил.
А мы тут про SAM convertions / лямбды / анонимные классы.

Ivan
04.02.2017
21:59:47
подставнока идет по аннотациям
в тосте параметр длительности по аннотациям

Google

Ivan
04.02.2017
22:00:27
котлин их не понимает
поэтому не предлагает авткомлит

Quantum Harmonizer
04.02.2017
22:01:06
Мы про автокомплит после new к анонимным классам

Ivan
04.02.2017
22:01:20
третий раз
метод принимающий этот интерфейс
имеет аннотацию
поэтому и не предлагает комплит
хоть нью, хоть константа
разницы нет

Quantum Harmonizer
04.02.2017
22:03:10
Интовая константа подставляется по аннотации, потому что аннотация — единственный способ понять, какую константу метод готов принять.
Лямбда передаётся без аннотаций, как реализация запрошенного интерфейса.

Андрей
04.02.2017
22:03:21
в примере кликЛисенер - это интерфейс без всяких аннотаций. в джаве идея создает аннонимный класс, и пишет шаблонный код за тебя. В лямде же только реализацию писать нужно.

Ivan
04.02.2017
22:04:11

Андрей
04.02.2017
22:04:32
Причем если входящий параметер один, то it выводится правильно. если несколько, то предлагает создать под них переменный, и тоже правильно выводит под них типы

Ivan
04.02.2017
22:04:49
естественно, нью же не напишешь в котлине)

Quantum Harmonizer
04.02.2017
22:05:21
и... что мы здесь должны увидеть кроме интерфейса OnClickListener?

Ivan
04.02.2017
22:05:41
ну а что должно подставлять тогда?
я не понял

Quantum Harmonizer
04.02.2017
22:06:51
А, синтаксис, который я не упомянул.
SomeInterface {
// body
}

Todor
04.02.2017
22:07:52

Михаил
04.02.2017
22:08:12
речь о том, что в джаве:
view.setOnClickLstener(v->do());а в котлине :
view.setOnClickListener(OnClickListener {do()})???

Google

Todor
04.02.2017
22:08:57
да, думаю о нем, если я тебя, Михаил, правильно понял

Quantum Harmonizer
04.02.2017
22:09:05
да, в Java после new сразу autocomplete предлагает правильный интерфейс.

Михаил
04.02.2017
22:09:30
есть такая беда

Todor
04.02.2017
22:09:35
например
я понимаю что в джаве я в методе имею дело с v=view и знаю ее методы
а в котлине - хз шо в этой лямбде(

Андрей
04.02.2017
22:10:00
можно ведь и так
view.setOnClickListener { do() }

Михаил
04.02.2017
22:10:21

Андрей
04.02.2017
22:10:36

(;¬_¬)
04.02.2017
22:10:37
А что тут делаешь тогда?
возможности нет, но есть желание, ну и полезную информацию впитываю, почитывая что тут обсуждают =)

Admin
ERROR: S client not available

Quantum Harmonizer
04.02.2017
22:11:08

Todor
04.02.2017
22:15:39
@Harmonizr угу, именно это имел ввиду
от анонимных классов

Михаил
04.02.2017
22:17:46
нифига

Igor
04.02.2017
22:18:27
Такое работает только в сторону Java (конвертирование Kotlin лямбд в Java fun-interface)

Todor
04.02.2017
22:18:49
думаю, что я сбил вас с толку перепутав анонимные классы и лямбду, не обьяснив это нормально

Андрей
04.02.2017
22:19:21
Метод принамает на вход клик лисенер
В джаве через анонимный класс нужно создать новый класс, который имплементит этот интерфейс, написать кучу шаблонного кода, где мы овверайдим метод онКлик, и в самом методе реализовать логику обработки клика
В джаве через лямбду нам нужно только написать тело метода онКлик
В котлине через лямбду нам нужно только написать тело метода онКлик
Поэтому на реплику
а в котлине - хз шо в этой лямбде
вопрос оставляю прежним - чем лямды котлина принципиально отличаются от лямд джавы?

Quantum Harmonizer
04.02.2017
22:19:22
Т. к. в Kotlin есть явные функциональные типы, SAM-convertios работают только с Java-интерфейсами.

Михаил
04.02.2017
22:21:35
в этом случае ток анонимный класс написать можно?

Google

Михаил
04.02.2017
22:22:01
Лямбду тут никак не передать?

Quantum Harmonizer
04.02.2017
22:22:14

Михаил
04.02.2017
22:22:42
а надежда была
это будут фиксить?
или с этим жить придется?

Quantum Harmonizer
04.02.2017
22:23:04
Нет.
Функциональные типы же.

Андрей
04.02.2017
22:23:14
нифига
если метод создаешь на котлине, то там надо явно указывать что ты на вход лямду принимаешь. Если метод пришел с джавы (как в примере @iamtodor), то такое работает

Igor
04.02.2017
22:23:38

Михаил
04.02.2017
22:24:08
ну в интеропе с джавой приходится писать все равно больше
чем на джаве

Quantum Harmonizer
04.02.2017
22:24:56
Почему же?

Михаил
04.02.2017
22:25:15
если лисенер, как параметр конструктора, то придется писать тип лямбды
тип интерфейса**
в джаве достаточно лямбду передать

Андрей
04.02.2017
22:25:46
кажется мы с тобой уже это обсуждали

Михаил
04.02.2017
22:25:51
да
до сих пор смирится не могу((

Quantum Harmonizer
04.02.2017
22:27:11

Igor
04.02.2017
22:27:27
А в java это будет видно вот так https://i.gyazo.com/5225e79dcf8924043d0db38d7e7efc96.png

Quantum Harmonizer
04.02.2017
22:28:20
Почему не view -> null?