@kotlin_lang

Страница 256 из 982
Alexander
22.07.2017
10:54:40
@Mihail_t Спасибо. Сообщение ввело в заблуждение

Gray
22.07.2017
12:25:29
public inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.mapTo(destination: C, transform: (T) -> R): C {...} ох, как сложно понял

Boris
22.07.2017
12:42:49
А мне ок

Alexander
22.07.2017
13:45:09
Gray посмотри на c++ или rust и сразу полегчает=)

Google
Gray
22.07.2017
13:50:24
Кстати, можете покидать пару ссылок на полезную инфу. С документации не все понятно

Boris
22.07.2017
13:55:52
Кстати, можете покидать пару ссылок на полезную инфу. С документации не все понятно
вообще документация довольно неплохая, так что лучше спрашивать непонятные моменты здесь, обычно это какие-то совсем неочевидные вещи, которые и в книге могут быть не описаны

а почему так каждый раз ругаются когда этого бота запускают, старая статистика убивается?

Boris
22.07.2017
14:02:41
Ответ в описании чата.
да, я отлично знаю, что там эта ссылка есть, просто пытаюсь суть проблемы понять, она в том, чтобы ленту еще раз этой ссылкой не засорять или есть и какие-то другие побочные эффекты?

Gray
22.07.2017
14:19:33
я случайно отправил))

repeat(times = 5, action = { i -> println("index $i") }) repeat(times = 5) { i -> println("index $i") } кто-то может обьснить, почему во втором варианте возможно такая записить

Михаил
23.07.2017
09:11:13
repeat(times = 5, action = { i -> println("index $i") }) repeat(times = 5) { i -> println("index $i") } кто-то может обьснить, почему во втором варианте возможно такая записить
если функция принимает 2 аргумента, и вторым аргументом является другая функция, то можно вынести эту вторую функцию за скобки в виде лямбды

Gray
23.07.2017
09:13:20
понял, спасибо

Михаил
23.07.2017
09:15:24
если функция принимает 2 аргумента, и вторым аргументом является другая функция, то можно вынести эту вторую функцию за скобки в виде лямбды
более того, если не ошибаюсь, так можно делать с любым кол-вом аргументов, главное чтобы последним была функция

Gray
23.07.2017
09:28:52
обьясните еще, что такое inline функции, зачем они вообще

Yaroslav
23.07.2017
09:32:14
Google
Nikolai
23.07.2017
09:33:22


инлайн функции могут быть виртуальными?

Ivan
23.07.2017
09:40:47
Омг, откуда этот текст?

Nikolai
23.07.2017
09:41:14
ссылка выше

Ivan
23.07.2017
09:44:30
Офигеть и в офф документации это тоже есть... https://kotlinlang.org/docs/reference/inline-functions.html Я всегда думал что основным аргументом за инлайн было return в теле лямбды и возврат значения из вышестоящей функции

Ruslan
23.07.2017
09:45:39
инлайн функции могут быть виртуальными?
Тут скорее про invoke virtual в Java

Ivan
23.07.2017
09:46:40
А, точняк, котлин же ещё с андроидом и другими vm должен дружить, а там и правда может быть пенальти, просто в хотспоте jit это всё умеет круто оптимизировать. Вплоть до девиртуализации метода

Quantum Harmonizer
23.07.2017
10:04:47
инлайн функции могут быть виртуальными?
Нет конечно. А вот в Java, на каком-нибудь Consumer<T>, будет виртуальный (invokeinterface) вызов.

Quantum Harmonizer
23.07.2017
11:28:15
Что значит идеальной?
Не разбирался детально. Слышал, что её ещё допиливают.

Boris
23.07.2017
11:28:30
Те вызовы, которые можно сделать инлайн они не будут виртуальными, инвокстатик в плохом случае, а если под нагрузкой, то и заинлайнится

Не разбирался детально. Слышал, что её ещё допиливают.
Хотспот все время допиливают, да, даже 9 джаву собираются выпускать

Это я к тому, что в общем случае, лучше стараться избегать оптимизации явным инлайном

Quantum Harmonizer
23.07.2017
11:49:34
Это я к тому, что в общем случае, лучше стараться избегать оптимизации явным инлайном
Почему же? Если в классе сотня лямбд, зачем создавать 100 анонимных классов (по 3-4 метода в каждом), если можно заинлайнить?

Boris
23.07.2017
12:01:23
Не, я имею ввиду оптимизацию инлайна функции. Инлайн лямбд это одна из основных фич инлайна

Boris
23.07.2017
12:26:34
Не уловил смысл предложения.
Я говорю о том, что инлайнить функцию принудительно, чтобы сэкономить на инвоке в общем случае не имеет смысла. Совсем другое дело инлайнить функцию вместе с передаваемой в неё лямбдой, ради этого во многом эта фича и появилась

Google
Boris
23.07.2017
12:29:27
Там профит не только в отсутствии виртуального вызова, но и это тоже, да. Я похоже не правильно понял посыл

Вообще думаю для кейза в котором можно применить инлайн-функцию, хотспот может вызов девиртуализировать

Но всё равно много профитов

Особенно для дсл-ов

Lilian
23.07.2017
16:40:48
для любителей шары, пока не поздно

Kotlin for Android Development : Develop an App with Kotlin – 100% Free Udemy Coupon https://www.udemy.com/kotlin-for-android-development-development/?couponCode=BBHFREE

Sergey
23.07.2017
18:29:55
Спасибо ?

Lilian
23.07.2017
18:36:26
?

Gray
23.07.2017
20:39:40
fun stringBuilder(): String { testFun { name: String, age: Int -> return "My name is $name" } return "" } inline fun testFun(block: (String, Int) -> Int): Unit { block("Gray", 23) }

Gray
23.07.2017
20:41:52
кто объяснить, почему должна быть функция, которая возвращает Int, но можно передать и функцию, которая возвращает String

return в лямбде недопустим
так если встроенная функция, то можно

вроде как

Quantum Harmonizer
23.07.2017
20:44:48
так если встроенная функция, то можно
точно, мне казалось, что можно только labeled

Admin
ERROR: S client not available

Konstantin
23.07.2017
20:45:12
Да, насколько я помню там есть non-local return

И это действильно относится к inline

Google
Quantum Harmonizer
23.07.2017
20:47:01
Технически, она, скорее всего, возвращает Nothing, что является подтипом всего, в т. ч. Int.

Gray
23.07.2017
20:49:31
не очень понятно, как это работает

Quantum Harmonizer
23.07.2017
20:50:52
не очень понятно, как это работает
return, который находится в лямбде, возвращает из stringBuilder().

Gray
23.07.2017
20:54:27
можете написать, как оно будет "под капотом", как оно встроит функцию

Quantum Harmonizer
23.07.2017
20:55:57
можете написать, как оно будет "под капотом", как оно встроит функцию
fun stringBuilder(): String { // inlined testFun return "My name is Gray" // end inlined testFun return "" }

Sergey
23.07.2017
21:01:45
Привет! Я сегодня обновил свой набор карточек для интервального повторения разделов документации по Котлину (для программы Anki), делюсь этим с сообществом. Возможно, тут кто-то применяет такой подход для повторения прочитанной информации чтобы она лучше усвоилась и ему это будет полезно. Сейчас набор синхронизирован с репозиторием сайта котлина.

http://telegra.ph/Kotlin-language-reference-in-form-of-Anki-cards-07-23

? Слышали ли вы \ пользовались ли методом интервального повторения ? ? Не слышал, интересно взглянуть – 8 ??????? 67% ? Не слышал и не интересно – 3 ??? 25% ? Слышал, но не пользуюсь – 1 ? 8% ? Да, слышал, пользуюсь ▫️ 0% ? 12 people voted so far.

Sergey
23.07.2017
21:03:20
Я потратил некоторое время для того чтобы это все оформить и логично будет, что мне интересно насколько это может быть полезно сообществу ?

Konstantin
23.07.2017
21:06:36
Проблема в смысле подхода. Если пользуешься чем - то, то запомнится и само. Если никак не получается чисто механически сдампить все в голову, то может и не стоит себя насиловать?

Gray
23.07.2017
21:09:01
Я правильно понял, что inline функции только с лямбдами работает?

Sergey
23.07.2017
21:09:19
Возможно, однако подобные подходы позволяют быстро восстанавливать инфу в голове после перерыва долгого и зачастую помогают при подготовке к собеседованию

Dibro
23.07.2017
21:09:27
работает с чем угодно, но эффективно только с лямбдами

Quantum Harmonizer
23.07.2017
21:09:59
Я правильно понял, что inline функции только с лямбдами работает?
Но с ними inline-функции имеют смысл — там и non-local returns, и повышение производительности.

Gray
23.07.2017
21:10:07
fun stringBuilder2(): String { testFun2() return "" } inline fun testFun2(): String { return "Gray" }

тупой пример, просто интересно, как работает

Dibro
23.07.2017
21:10:34
еще инлайн используется когда нужен reified генерик

Google
Quantum Harmonizer
23.07.2017
21:10:57
тупой пример, просто интересно, как работает
как fun stringBuilder2(): String { "Gray" return "" }

"Gray" — неиспользованное выражение

Gray
23.07.2017
21:12:27
я думал, что return вернет Gray в stringBuilder2

Quantum Harmonizer
23.07.2017
21:14:09
Нет, non-local return происходит только из лямбды. А здесь всё как обычно — одна функия использует другую, а та возвращает ей значение.

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