@kotlin_lang

Страница 747 из 982
Albert
10.07.2018
14:19:08
Ну и из него запускай main
ну, так не интересно. т.е. нет возможности создать файл с одним методом и запустить с кнопки

Andrey
10.07.2018
14:22:01
ну, так не интересно. т.е. нет возможности создать файл с одним методом и запустить с кнопки
Должно быть. Наверно надо Kotlin plugin поставить. Android Studio на основе IDEA сделан. В IDEA всё прекрасно с кнопки работает.

Google
Albert
10.07.2018
14:25:21
в идеи - да

Dmitry
10.07.2018
14:38:30
class MyJobService : JobService() {...} val myJob = dispatcher.newJobBuilder() .setService(MyJobService::class.java) //error Type inference failed. Expected type mismatch: required: Class<out JobService!>! found: Class<MyJobService> wtf? setService() is a java method.

Типично, ровно такой же класс из другого пути утащил, с такими же методами...

Egor
10.07.2018
14:40:54
Мб импорт не тот?

Dmitry
10.07.2018
14:41:49
Да, так точно, надо больше самому думать перед тем как постить -)

Dmitry
10.07.2018
14:45:02
Я вот тоже про вариантность подумал, а на самом деле такой же класс по другому пути импортнул

Eugeny
10.07.2018
14:46:45
Почему при объявлении лямбды как локальной переменной нельзя использовать несколько return в теле лямбды в отличие от лямбд передаваемых как аргументы в функции?

Dimon
10.07.2018
14:53:37
Ты же не можешь в реализации интерфейса return указать для вызываемой функции?

Andrey
10.07.2018
14:53:56
Почему при объявлении лямбды как локальной переменной нельзя использовать несколько return в теле лямбды в отличие от лямбд передаваемых как аргументы в функции?
В Kotlin лямбдах же нет return, насколько мне известно. Она возвращает результат последнего выражения в теле лямбды.

Google
Dimon
10.07.2018
14:54:02
если так сильно хочеться - пиши inline fun

хотя не, это тоже бред

Eugeny
10.07.2018
14:54:27
val function = { i: Int -> if (i == 2) { return 5} return 6 }

Типа такого, с телефона

Dimon
10.07.2018
14:54:53
у тебя не указан тип лямбды

Quantum Harmonizer
10.07.2018
14:54:59
val function = { i: Int -> if (i == 2) { return 5} return 6 }
return в лямбде возвращает из inline-функции, в которой она находится

Dimon
10.07.2018
14:55:18
val function: (Int)->Int

Quantum Harmonizer
10.07.2018
14:55:25
а это, видимо, присвоение в проперти

Eugeny
10.07.2018
14:55:28
у тебя не указан тип лямбды
Type inference разберется же

Quantum Harmonizer
10.07.2018
14:55:40
у тебя не указан тип лямбды
это вообще не играет роли

Dimon
10.07.2018
14:55:42
либо val function = fun(i:Int): Int {}

Eugeny
10.07.2018
14:55:56
Это локальная переменная

Dimon
10.07.2018
14:55:56
ну как по мне его явно лучше указать

ну тогда хз

Andrey
10.07.2018
14:57:38
val function = { i: Int -> if (i == 2) { return 5} return 6 }
Вот так можно: val f = fun(it: Boolean): Int { if (it) return 1; return 2 }

Quantum Harmonizer
10.07.2018
14:58:06
ну тогда хз
я непонятно объяснил?

Dimon
10.07.2018
14:58:27
та у меня вопросов нет

что мне объяснять

Dimon
10.07.2018
14:59:49
я ж то же самое написал

Google
Dimon
10.07.2018
14:59:54
Quantum Harmonizer
10.07.2018
15:01:17
лол

Dumitru
10.07.2018
15:01:24
))

Andrey
10.07.2018
15:02:03
Точно. Спасибо
А конкретно для вашего примера короче будет так: val function = { i: Int -> if (i == 2) 5 else 6 }

Quantum Harmonizer
10.07.2018
15:03:25
именно так будет работать

Dimon
10.07.2018
15:03:32
должно

Andrey
10.07.2018
15:03:33
именно так у него не работает))
Именно так работать будет. Там используется if выражение и нет return

Dimon
10.07.2018
15:03:46
а бля, не заметил что ретёрна нет

Dumitru
10.07.2018
15:04:06
Похоже всю жизнь в чатах kotlin будет примеры как можно сделать короче :)

Dimon
10.07.2018
15:04:20
а что тут ещё делать то

если б мы не хотели делать короче, то на джаве писали бы

Andrey
10.07.2018
15:04:45
Dumitru
10.07.2018
15:05:02
Все верно, я просто уточняю нашу деятельность

Dimon
10.07.2018
15:05:26
надо тогда группу переименовать

"Котлин короче"

Andrey
10.07.2018
15:06:55
Вспомнилось на тему короче: https://vk.com/just_wiki

Eugeny
10.07.2018
15:11:26
А конкретно для вашего примера короче будет так: val function = { i: Int -> if (i == 2) 5 else 6 }
Про выражение согласен. У меня коллега спросил, который Котлин первый день юзает почему в хайер ордер лямбды отличное поведение от лямбды передаваемой как аргумент и стало тоже интересно в чем разница

Условная логика в лямбдах дело само по себе такое, квешнбл, тут именно почему так происходит заинтересовался

Google
Mikhail
10.07.2018
15:14:31
Mikhail
10.07.2018
15:15:17
ну так условные выражения никто не отменял

Quantum Harmonizer
10.07.2018
15:15:19
чойта квешнбл? когда вообще условная логика может быть квешнбл?
всегда, к процедурным конструкциям большие вопросы

Admin
ERROR: S client not available

Eugeny
10.07.2018
15:15:33
Но вообще если в лямбде сложная логика с условиями, то лучше в класс запихивать или хотя бы в отдельный метод

Eugeny
10.07.2018
15:16:06
А не инлайнить в бади нечитаемую порнуху

и что от этого изменится? Условия куда-то уйдут?
Srp. Функция отвечает за свой функционал. Вызывается она в лямбде или где не важно

Mikhail
10.07.2018
15:17:16
мы явно где-то друг друга не поняли

Eugeny
10.07.2018
15:17:17
А нечитаемая процедурная порнуха прямо в лямбде не нужна

Simon
10.07.2018
15:17:22
Вот у листа есть windowed который формирует List<List<>>, оператора что делает обратное же нет?

Simon
10.07.2018
15:18:39
спс

Igor
10.07.2018
15:19:32
flatten

Mikhail
10.07.2018
15:19:34
А нечитаемая процедурная порнуха прямо в лямбде не нужна
можно сначала? Я потерял нить аргументов: "ФП наше всё" -> "запихиваем в класс" -> "SRP" -> "порнуха"

Eugeny
10.07.2018
15:20:06
Ок

Google
Andrey
10.07.2018
15:24:02
А нечитаемая процедурная порнуха прямо в лямбде не нужна
Есть серъезный вопрос насчёт того, с каких пор условные выражения стали процедурной порнухой? Особенно с учётом того, что они есть практически во всех чисто функциональных ЯП. Вот множественые return - да, вполне себе порнография. Притом как в лямбдах, так и в методах.

Rahimjon
10.07.2018
15:24:40
kotlin best practics

Rahimjon
10.07.2018
15:25:21
кто знаеть

Andrey
10.07.2018
15:43:24
Они есть, но к ним большие вопросы. Полиморфизм, стратегии, chain of responsibility — гораздо более гибкие штуки.
Да, если высокая цикломатическая сложность (много if ... else if ..., особенно вложенных), то имеет смысл применять паттерны, хотя в Kotlin, во многих случаях, проще применить when выражение. Но для простого случая if ... else паттерны выглядать как оверинжиниринг.

Alexei
10.07.2018
19:24:18
всем привет тут у нас товарищи о https://www.graalvm.org/ заговорили типо оно прод реди что гдет уже юзается и все дела. Кто что думает по этому поводу? а то мне эта штукенция выглядит достойной заменой котлин нейтив, не?

Alexei
10.07.2018
19:27:11
ну понятно что не у всех повсеместно и что не прям супер стабильная штука

но у них там релиз версия вроде как есть

Mikhail
10.07.2018
19:29:13
Alexei
10.07.2018
19:59:28
спасибо вики

и вроде это не то

вопрос то был не в том как они это сделали

Bogdan
10.07.2018
20:13:27
спасибо вики
это со своих слов, еще был текст но я решил его стереть

Страница 747 из 982