
Vladislav
04.06.2017
18:23:23
Спасибо, гляну)

Anton
04.06.2017
19:20:28
как работет инлайн функция вот на этом примере
я что то смотрю и вообще не понимаю

Google

Igor
04.06.2017
19:21:56
Инлайниться сама вызываемая функция (lock) и передаваемая туда лямбда. Что конкретно не понятно?

Anton
04.06.2017
19:23:07
вот открыл на русском доки думал может я просто что то не понимаю на английском формулирвоку.
"Но во многих случаях эти "накладные расходы" можно устранить с помощью инлайнинга (встраивания) лямбда-выражений. Например, функция lock() может быть легко встроена в то место, из которого она вызывается:"
что значит встроена

Igor
04.06.2017
19:24:19
Значит что НЕ будет вызова функции, а ее тело вставится на место вызова (ты в принципе знаешь что такое инлайнинг?)
Если не знаешь, то вот https://en.wikipedia.org/wiki/Inline_expansion

Anton
04.06.2017
19:24:36
нет не знаю)
пошел читать

Pavel Shackih
04.06.2017
19:26:56
Посмотри в декомпиле джавовый код, который сгенерится. Мне кажется, сразу станет ясно

Anton
04.06.2017
19:27:40
сейчас попрбую спасибо
When executing a given piece of code, whenever you call a standard function the execution time is slightly higher than dumping there the code contained into that function. Dumping every time the whole code contained in a function is on the other end unmainteinable because it obviously leads to a whole mess of duplication of code.
Inlining solves the performance and maintainability issue by letting you declare the function as inline (at least in C++), so that when you call that function - instead of having your app jumping around at runtime - the code in the inline function is injected at compile time every time that given function is called.
вот теперь знаю что это)
вот весь смысл ?

Антон
04.06.2017
19:33:47
Вместо вызова функции подставляеться код из нее

Google

Anton
04.06.2017
19:34:05
и это дает большой профит по перфомансу?

Igor
04.06.2017
19:34:20
вот весь смысл ?
Для оптимизироватора в HotSpot наверное да. Он кстати отлично инлайнит без всяких kotlin анатация.
Для Kotlin как языка, это дает под. возможности: типа выйти из вызывающего метода через return внутри лямбды и reifed дженерики.

Антон
04.06.2017
19:34:48
На счет перформанса хз
Знаю что дает

Anton
04.06.2017
19:34:57
а без инлайнинга из дженерика можно выйти только с лейблом?
ой
из лямблы

Антон
04.06.2017
19:35:03
Но на сколько большой не скажу

Igor
04.06.2017
19:35:35

Anton
04.06.2017
19:36:34
This means that to exit a lambda, we have to use a label, and a bare return is forbidden inside a lambda, because a lambda can not make the enclosing function return. But if the function the lambda is passed to is inlined, the return can be inlined as well,
спасибо за обьяснение)

Igor
04.06.2017
19:40:58

Anton
04.06.2017
19:42:48
понял) спасибо еще раз

Igor
04.06.2017
19:53:43
Я же правильно понимаю что в Kotlin конвенция на имена интерфейсы как в Java и I нежелателен?
В C# (ходит слух) I добавляют тк там нет extend/implement, а только : и не понятно в объявление класса где интерфейс/базовый-класс.

Антон
04.06.2017
19:56:30
+

Михаил
04.06.2017
19:59:57
кому как нравится)
также как m и s префиксы)

Андрей
04.06.2017
20:46:35
На сайте у них есть небольшой раздел с конвенцией. Что-то котлино-специфическое там описано. Остальное вроде совпадает с конвенцией джавы. По крайней мере если смотреть исходники самого котлина. И имена интерфейсов с приставкой I мне там вроде не встречались.
Ну а то, что кому-то нравится писать префиксы m и s - это их дело. Но если придут работать в нормальную компанию, где соблюдают конвенции для однообразия кода (не важно официальные или какие-то свои), то придется все равно писать как нужно, а не как нравится.

Axrorxo'ja
05.06.2017
05:12:05
fun String.cool() = print("Hi Kotlin is cool") кто может сказат што здес не правилно

Google

Axrorxo'ja
05.06.2017
05:14:27
когда я на беру String.cool() чо та он невидит

Vladimir
05.06.2017
05:24:51
@axrorxoja_yodgorov нужно вроде вызывать у объекта типа String

Axrorxo'ja
05.06.2017
05:25:51

Aleksandr
05.06.2017
12:16:33
Братие, а можно ли, объявив Enum<Int>, получить потом из переменной собственно Int?

Quantum Harmonizer
05.06.2017
12:17:07

Михаил
05.06.2017
12:18:14

Руслан
05.06.2017
12:19:06
Можно использовать sealed class тут
В Enum afaik так нельзя, т.к. это ломает саму суть enum

Quantum Harmonizer
05.06.2017
12:19:38
кто-нибудь понял вопрос?

Aleksandr
05.06.2017
12:19:56
enum class EnumForecastCalculationResult constructor(private val value: Int) {
NotCalculated(1),
Win(2),
Lose(3);
потом в коде есть переменная val result: EnumForecastCalculationResult
создание enum из инта через соотв. метод companion object

Boris
05.06.2017
12:20:42
может если его приватным не делать, то его будет лучше видно?

Quantum Harmonizer
05.06.2017
12:22:01

Aleksandr
05.06.2017
12:22:49
так точно, я так и написал, а наоборот?

Quantum Harmonizer
05.06.2017
12:23:11

Nikita
05.06.2017
12:24:48
Друзья, подскажите пожалуйста, как в котлине работать с пропертями в кириллице? Перепробовал множество способов, все равно возвращает абракадабру из символов

Dmitry
05.06.2017
12:25:06
вопрос по scala:
хочу сконвертить java.util.Map -> scala.collections.immutable.Map
кодом на java/kotlin
делаю по примеру отсюда
https://stackoverflow.com/questions/11903167/convert-java-util-hashmap-to-scala-collection-immutable-map-in-java/11903737#11903737
получаю
Cannot access class 'scala.Predef$.less.colon.less'. Check your module classpath for missing or conflicting dependencies
как такое пофиксить?

Nikita
05.06.2017
12:25:13
проблема в том что аналогичную проблему решал крайне давно на java, но проблем нам не было...

Quantum Harmonizer
05.06.2017
12:25:46

Dmitry
05.06.2017
12:26:07

Google

Quantum Harmonizer
05.06.2017
12:26:13

Nikita
05.06.2017
12:26:36
извиняюсь, за спам. Самый последний костыль сработал...

Quantum Harmonizer
05.06.2017
12:27:52

Dmitry
05.06.2017
12:28:19

Boris
05.06.2017
12:28:42
поставить плагин для идеи, который конвертит кирилицу в \u-нотацию

Quantum Harmonizer
05.06.2017
12:28:48

Admin
ERROR: S client not available

Nikita
05.06.2017
12:28:49

Dmitry
05.06.2017
12:29:00
те же проблемы и из java

Quantum Harmonizer
05.06.2017
12:29:46

Dmitry
05.06.2017
12:30:11
хороший язык scala. и интероп интересный

Aleksandr
05.06.2017
12:34:54
Так это же я идиот и синтаксис не знаю. Boris , @Harmonizr , @Mihail_t , спасибо

Dzmitry
05.06.2017
13:09:02
Господа, и дамы (если присутсвуют), на ваш взгляд норм, что такой код компилиться?
val a = with (Gsr()) {
ctime = 300
}

Quantum Harmonizer
05.06.2017
13:10:28
норм

Boris
05.06.2017
13:10:29

Руслан
05.06.2017
13:10:31
Ну норм, получил Unit, в чем проблема)
Ты когда a попытаешься использовать - вот тогда заметишь

Dzmitry
05.06.2017
13:11:06
ну имхо не логично Unit засовывать. Я бы скорее ожидал, что не скомпилиться

Руслан
05.06.2017
13:12:31
Как раз таки Unit в противовес void вполне логично)

Google

Dzmitry
05.06.2017
13:13:09
в жаве ты не можешь засунуть в переменную void

Quantum Harmonizer
05.06.2017
13:13:36
Ну, Unit не void.

Dzmitry
05.06.2017
13:14:27
не, ну если тока я возмущен, то ок :)

Boris
05.06.2017
13:14:41

Руслан
05.06.2017
13:14:45
https://stackoverflow.com/a/22655381/1538877

Igor
05.06.2017
13:14:53

? animufag ?
05.06.2017
13:15:49

Руслан
05.06.2017
13:15:58

Dzmitry
05.06.2017
13:16:50

Михаил
05.06.2017
13:17:08
Ну, Unit не void.
как сказал Бреслав как-то, "Unit - это ничего интересного, а вот void - это вообще ничего"

Igor
05.06.2017
13:20:30

Михаил
05.06.2017
13:22:23
:D

Quantum Harmonizer
05.06.2017
13:28:23

Михаил
05.06.2017
13:31:32
единственное, что с Unit не удобно это то что котлин компайлер не конвертит джавоский войд в Unit

Михаил
05.06.2017
13:32:43

Михаил
05.06.2017
13:33:44
хотя бы для лямбд
почему не возможно?

Anton
05.06.2017
13:35:20
Void это тоже обьект