@kotlin_lang

Страница 522 из 982
Quantum Harmonizer
31.01.2018
13:27:07
Так никакой постоянной генерации нет
copy-paste кода inline-функции — в каком-то смысле генерация

Виталий
31.01.2018
13:27:27
чот я запутался

Dumitru
31.01.2018
13:27:51
нестандартный вопрос (можете игнорить и я удалю): В Великобритании есть вакансии для Kotlin программистов ? Где он вообще востребован ?

Kira
31.01.2018
13:28:42
чот я запутался
При компиляции код из тела функции вставят в места её использования и в рантайме её не будет

Google
Виталий
31.01.2018
13:29:39
При компиляции код из тела функции вставят в места её использования и в рантайме её не будет
ясно, тогда inline для каких целей ? в двух словах на простом русском если можно )

Badya
31.01.2018
13:29:50
JIT-компилятор тоже инлайнит

Kirill
31.01.2018
13:30:06
нестандартный вопрос (можете игнорить и я удалю): В Великобритании есть вакансии для Kotlin программистов ? Где он вообще востребован ?
Да, есть. Я был на презентации по Котлину, где докладывал чувак из Лондона. У них есть котлин в продакшене.

Kira
31.01.2018
13:30:10
Badya
31.01.2018
13:30:19
Kirill
31.01.2018
13:30:45
JIT-компилятор тоже инлайнит
А насколько хорошо андроидовская vm это делает?

Badya
31.01.2018
13:31:14
Quantum Harmonizer
31.01.2018
13:31:15
ясно, тогда inline для каких целей ? в двух словах на простом русском если можно )
чтобы не генерировать анонимный класс для лямбда-выражения, а выполнить код на месте

Надо смотреть документацию)
у них всё работает как попало, а задокументировано ещё хуже

Виталий
31.01.2018
13:31:39
ааааа

Badya
31.01.2018
13:32:46
у них всё работает как попало, а задокументировано ещё хуже
Ну в хотспоте точно есть параметр контролирующий предел инлайна

Kira
31.01.2018
13:32:56
Виталий А ещё я люблю логические части в отдельные методы разделять, с инлайном накладных расходов ноль

Google
Quantum Harmonizer
31.01.2018
13:33:15
Quantum Harmonizer
31.01.2018
13:33:58
в отдельные функции ?
это одно и то же

Виталий
31.01.2018
13:34:18
я вообщем для ведроида выясняю... что бы потом не ахнуть

это одно и то же
методж же нельзя объявить за пределами класса

Quantum Harmonizer
31.01.2018
13:35:10
методж же нельзя объявить за пределами класса
ну чисто по определению метод — это функция класса

Kira
31.01.2018
13:35:20
методж же нельзя объявить за пределами класса
Сгенерится метод в классе статический и что?

Процедура и точка)

Фортран форева

Виталий
31.01.2018
13:36:37
Сгенерится метод в классе статический и что?
вроде слышал что для ведроида статики вообще зло

Kira
31.01.2018
13:38:08
вроде слышал что для ведроида статики вообще зло
Такого не слышал, вот раньше сильно напирали на количество методов в dex файле, инлайн чуть помогает, но сейчас уже есть multidex, не уверен что ещё актуально

Badya
31.01.2018
13:38:25
Вот статья на практическом примере показывающая что в кишках https://m.habrahabr.ru/post/269023/

Kirill
31.01.2018
13:42:07
Вот статья на практическом примере показывающая что в кишках https://m.habrahabr.ru/post/269023/
https://habrahabr.ru/post/269023/#comment_8618069 apangin 18.10.15 в 16:51 > лимит инлайнинга в Hostpot JVM — 35 байткод инструкций После этой ерунды можно дальше не читать. И что invokestatic якобы эффективнее invokevirtual, и что «лишние» push/pop якобы влияют на скорость — всё от начала и до конца — сплошная неправда. Уберите, пожалуйста, статью, чтоб не путать людей. «Оптимизировать» программу на уровне байткода — всё равно что улучшать автомобиль, выкидывая «лишние» детали. Верю Андрею больше чем автору статьи

Phil
31.01.2018
13:43:46
Кстати, а для чего нужен быстрый пул соединений, где скорость пула становится существенной, в каких задачах? (P.S. хотя это и некоторый оффтопик)

DY
31.01.2018
14:12:01


Igor
31.01.2018
14:13:05
Нафиг столько интерналов? Зачем типы у полей?

Quantum Harmonizer
31.01.2018
14:13:28
Api — плохое название

Google
Alexey
31.01.2018
14:13:33
lol во внутренних классах ссылка на this

Grushin
31.01.2018
14:13:41
sdk

DY
31.01.2018
14:13:46
Quantum Harmonizer
31.01.2018
14:13:52
execRequest можно и без run

непонятно, за что отвечают args

DY
31.01.2018
14:14:21
ну по факту без run не получится написать, в этом конкретном примере можно, да..

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



Alexey
31.01.2018
14:24:59
выглядит как размазывание кода

в котором любой "не автор" ногу сломит

DY
31.01.2018
14:26:12
в общем-то есть желание именно размазать (разбить как-то) код, т.к. методов будут сотни

DY
31.01.2018
14:27:50
на каждую часть апи несколько десятков

Alexey
31.01.2018
14:29:11
Ну вот каждая часть апи - свой класс с аргументом http клиент

Igor
31.01.2018
14:29:20
А как ты гарантируешь что execRequest не упадет с исключеним, а обязательно вернет Result? Все эти Result<T, Exception> в котлине - вилами по воде писаная защита.

Alexey
31.01.2018
14:29:42
а потом их все можно уже запихать в api

Igor
31.01.2018
14:30:48
Google
Igor
31.01.2018
14:39:42
Кстати наткнулся на интересный проект https://github.com/square/kotlinpoet Позволяет генерить Kotlin сорцы - наверное удобно юзать для всяких генераторов.

Andrew
31.01.2018
14:54:24
Кстати наткнулся на интересный проект https://github.com/square/kotlinpoet Позволяет генерить Kotlin сорцы - наверное удобно юзать для всяких генераторов.
как только в котлин завезут публичное апи для compiler plugins, да ещё и такое, где манипулировать всем этим счастьем можно будет не на уровне инструкций, а хотя бы на уровне AST -- цены этому котлинпоэту не будет. а пока что, имея один kapt, который о котлине ничего не знает, мне эта штука кажется почти бесполезной.

Igor
31.01.2018
14:56:05
Я вот думаю ее заюзать что бы автоматически генерить DSL для сторонне java-библиотеки Не в рантай у клиента конечно, а тоже в виде либы.

Grushin
31.01.2018
14:57:32
MaterialDrawer.kt - кстати класс

Igor
31.01.2018
15:12:24
Ага я вкурсе, мне нужен DSL котлин

Виталий
31.01.2018
15:40:25
var isNull = true fun checkIsNull() { var counter = 0 for (tile in tiles) { tile.forEach { if (it != null) counter++ } if (counter > 0) break } isNull = counter == 0 } можно как то упростить ? если в двумерном массиве есть хоть один не null видел методы типа ....notNull.... но не понял как с ними работать (скорее всего в синтаксис еще не въехал)

и почемуто в первом if мне не позволили сделать break

Andrew
31.01.2018
15:45:23
val isNull = tiles.any { it == null }

если я ничего не упустил, само собой

Sergey
31.01.2018
15:45:52
tiles.flatten.any

Andrew
31.01.2018
15:46:12
упустил :)

Sergey
31.01.2018
15:46:48
даже не так

tiles.any { list -> list.any { it == null } }

Andrew
31.01.2018
15:48:17
да, это оптимальнее будет, оно будет бежать до первого null, а не проходить все коллекции

Виталий
31.01.2018
15:51:34
круто блин

но чет сложновато пока

спасибо)

Gleb
31.01.2018
15:53:50
еще так, но наверное медленнее будет tiles.flatMap { it }.all { it == null }

Google
Sergey
31.01.2018
15:56:54
flatten() == flatMap { it }

any выпадет на первой встрече, это будет быстрее

Виталий
31.01.2018
15:59:35
откуда вы знаете что будет быстрее, почему в any при первой встрече будет выход, да и вообще такие подробности ? Конвертите в жабу и чтаете ? Просто в доках ниче подобного нет :(

Gleb
31.01.2018
15:59:55
так исходники открыть можно, почитать

Виталий
31.01.2018
15:59:57
хотелось бы быть тоже просвещенным

Gleb
31.01.2018
16:01:01




Andrew
31.01.2018
16:01:38
Виталий
31.01.2018
16:02:18
пардон

Andrew
31.01.2018
16:03:30
оно со временем придёт, не переживайте. полезно периодически проглядывать список методов на коллекциях. ещё бы в Koans, конечно, что-нибудь на тему этих коллекций. и на тему корутин. да, много хочу :D

Sergey
31.01.2018
16:03:54
так all тоже
да, точно)

а исходники в котлине хорошие

их полезно поизучать

в stdlib*

Andrew
31.01.2018
16:04:22
так all тоже
А разве flatten не до конца добежит перед этим? Ну если мы не о Sequence говорим, конечно

Gleb
31.01.2018
16:04:52
добежит, к сожалению

Виталий
31.01.2018
16:05:44
isNotEmpty = tiles.any { it.any { it != null } } -> можно опускать оказывается

Andrew
31.01.2018
16:06:44
только если один параметр и подходит название it (в примере, кстати, уже сомнительный подход, и если код надо хоть немного усложнить, я бы поименовал хотя бы один из них)

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