
Vladimir
16.03.2018
07:18:37

Quantum Harmonizer
16.03.2018
07:19:28

Anton
16.03.2018
07:19:31
может он переводит

Vladimir
16.03.2018
07:19:50

Google

Michael
16.03.2018
07:24:24
а я толко сейчас нашел эта группа и не знал што это только русский чат.. я понемаю русский язык но не все оссобенно фразы котрые программистов говорят друг другом

Quantum Harmonizer
16.03.2018
07:25:13

Michael
16.03.2018
07:25:52
ok, thanks.. don't have any questions right now since I'm not programming today but good to know for the future
Telegram is much more convenient than firing up slack) are coroutines out of the experimental stage now?

Quantum Harmonizer
16.03.2018
07:28:58
But they are stable and usable even now.

Michael
16.03.2018
07:31:26
yes I've been using them quite a bit was just wondering as to the status - haven't been programming for a few months in Kotlin

Тимур
16.03.2018
08:02:36

Kira
16.03.2018
09:11:27
Кстати, задумался, у котлина есть собственные мультиплатформенные сокеты?

Vladimir
16.03.2018
09:15:03

Kira
16.03.2018
09:16:11

Quantum Harmonizer
16.03.2018
09:16:35

Kira
16.03.2018
09:20:36

Google

Roman
16.03.2018
09:26:50
В планах сделать отдельную от ktor.io библиотеку с блекджеком и асинхронными сокетами.

Руслан
16.03.2018
09:53:19
Это которая kotlin-io?

Roman
16.03.2018
09:56:03
kotlinx.io Туда постепенно переедут и асинхронные сокеты

Osip
16.03.2018
10:35:20
Наткнулся на такую забавную штуку.
Когда добавляю as WebDriver, то говорит, что это излишне, а когда убираю - не может сам его вывести.

Dmitry
16.03.2018
10:37:51
А как OperaDriver определен?

Gleb
16.03.2018
10:38:50
очевидно, что OperaDriver : WebDriver , ChromeDriver: WebDriver , иначе у человека бы и вопроса не было

Bogdan
16.03.2018
10:41:21

Osip
16.03.2018
10:42:08

Quantum Harmonizer
16.03.2018
10:42:42
мб взять sealed class?

Osip
16.03.2018
10:43:14
public class ChromeDriver extends RemoteWebDriver impllements ...
public class OperaDriver extends RemoteWebDriver implements ...
мб взять sealed class?
Это Selenium. Я, конечно, могу запилить свою обёртку на эти классы, но это выглядит как баг

Quantum Harmonizer
16.03.2018
10:44:22

Gleb
16.03.2018
10:44:23
периодически натыкаюсь на такие баги, но с каждым обновлением их становится меньше

Dmitry
16.03.2018
10:44:33
Зафайлишь issue в YouTrack, пожалуйста?

Quantum Harmonizer
16.03.2018
10:44:53
они же перепилили type inference, в 1.3, как я понимаю, большая часть багов исчезнет

Gleb
16.03.2018
10:45:20
а когда намечен релиз 1.3, хотя бы ориентировочно?

Quantum Harmonizer
16.03.2018
10:45:50

Google

Osip
16.03.2018
10:46:05
Кстати, могу протестить это с превью 1.3

Mikhail
16.03.2018
10:47:11

Vladimir
16.03.2018
10:48:36
Интересно, заиграет ли новыми красками термин type erasure после их релиза

Quantum Harmonizer
16.03.2018
10:50:31

Vladimir
16.03.2018
10:51:48
Почему должен?
Ну ведь inline классы фактически стираются во время компиляции.
В рантайме их нет, и так же, как и с дженериками, проверок типа тоже.

Quantum Harmonizer
16.03.2018
10:53:21

Vladimir
16.03.2018
10:54:58

Mikhail
16.03.2018
10:56:28
А как это все из джавы выглядит?

Anton
16.03.2018
10:58:05
никак
тайпалиасы всмысле

Quantum Harmonizer
16.03.2018
11:00:54
ну и инлайн классы никак)

Alexey
16.03.2018
11:02:48

Alexey
16.03.2018
11:03:00
считай это дериктивой #define

Anton
16.03.2018
11:04:20
а есть где то чейнджлог 1.3 кроме той трансляции?

Victor
16.03.2018
12:05:00

Глеб
16.03.2018
12:06:50
Идея с египетскими иероглифами мне нравится больше

Жабра
16.03.2018
12:38:25
Kotlin JVM имеет какие-то личные плюхи для вызова C кода? Или только как на Джаве?

Alexey
16.03.2018
12:38:59
jvm жи един

Жабра
16.03.2018
12:39:28
Ну мб библиотека какая-нибудь, и ещё что. Всё что я находил - для Натива.

Google

Quantum Harmonizer
16.03.2018
12:40:20

Жабра
16.03.2018
12:41:07
Понятно

Admin
ERROR: S client not available

Даниил
16.03.2018
12:44:57
тут всё очень плохо

Gleb
16.03.2018
12:56:56
было бы очень круто иметь какой-нибудь интероп для Kotlin JVM и Kotlin Native

Руслан
16.03.2018
12:57:32
Рыженков писал что они думают об этом и будут делать

Kira
16.03.2018
14:46:28

Sergey
16.03.2018
14:48:35
щас наверное все будет идти без jvm зависимостей, для мультиплатформенности

Kira
16.03.2018
14:50:33
Вот это и интересно, думаю про худые контейнеры на альпине

Sergey
16.03.2018
17:29:28
эх как же все печально с thread local

Alexey
16.03.2018
20:00:50

Kirill
16.03.2018
20:08:20
а потом будем усложнять язык с каждым релизом, чтобы продавать больше IDE под каждую таргет платформу!

Andrew
16.03.2018
20:39:31

Kirill
16.03.2018
20:39:57
Ну нейтив, да
AppCode CLion
IDEA Ultimate (WebShtorm)

Bogdan
16.03.2018
20:40:24
да и сейчс на котлине без ИДЕ писать не камельфо

Andrew
16.03.2018
20:41:17

Kirill
16.03.2018
20:41:49
первые 200 квикфиксов в сутки бесплатно, остальные по 1 центу за 10 штук, например )

oehdhs
16.03.2018
20:42:14
Вы с Microsoft путаете)

Andrew
16.03.2018
20:42:24

Google

Andrew
16.03.2018
20:42:42
Кто-то там недавно чёт о нарушениях NDA говорил... ?

Kirill
16.03.2018
20:43:21
?

Alex
16.03.2018
20:46:37
скорее всего совсем тупой вопрос, но я не могу понять, что я делаю неправильно
class Foo {
inline fun <T: Foo, R: Foo.Bar> T.extention( block : Foo.Bar.() -> Unit) : T {
block() // no value passed for parameter p1
return this
}
inner class Bar {
fun doSomething() = "I did it"
}
}
почему от меня требуется параметр в пустом блоке?

Andrew
16.03.2018
20:50:21
Дык не просто block(), а bar.block(). Он экстеншн-функция, ожидает ресивер.

Alex
16.03.2018
20:52:23
огромное спасибо

Andrew
16.03.2018
20:53:12
Не за что.

Alex
16.03.2018
20:57:42
дублирую ответ(вдруг кто-то так же не понимает), еще раз спасибо
class Foo {
inline fun <T: Foo, R: Foo.Bar> T.extention( block : Foo.Bar.() -> Unit) : T {
Bar().block()
return this
}
inner class Bar {
fun doSomething() = "I did it"
}
}

Andrew
16.03.2018
21:03:35
Немного странно создавать объект, вызывать на нём блок и тут же о нём забывать, это точно то, чего вы добивались?

Alex
16.03.2018
21:06:36
скорее мне было дико интересно, что я делаю неправильно

Dmitry
16.03.2018
21:08:51
Ресивер лямбды, который бар, надо в нее как-то передать или создать. Это же обьект обычный, который в байткоде будет восприниматься как параметр функции.
В правильном варианте вы просто создаете новый обьект, чтобы вызвать лямбду на нем. Это как минимум странно, а скорее всего бесполезно.
Если бар статический - делаем его обджектом и норм. А если инстанс - то его наверное тоже передавать туда как-то надо, иначе нет смысла инстансы создавать.