
Boris
12.03.2017
19:53:55
Наверное где-то ссылку на канал опубликовали, вот очередная волна и пошла

Igor
12.03.2017
20:00:30

Artem
12.03.2017
20:11:16
есть канал по rx?

Boris
12.03.2017
20:12:59
Может #reactivex ?

Google

Boris
12.03.2017
20:13:51
Не то чтобы я что-то про это знал, просто в предыдущем сообщении так написано

Sergey
12.03.2017
20:14:40

Igor
12.03.2017
20:16:15

Boris
12.03.2017
20:17:14
Мм, обычно вроде реактивный сокращают до rx, нет?

Sergey
12.03.2017
20:17:55
reactive extensions

Igor
12.03.2017
20:18:30

Mike
12.03.2017
20:18:53

Artem
12.03.2017
20:19:25
за канал спасибище) и да Rx — сокращение от reactivex / reactive extensions

Igor
12.03.2017
20:19:54
Как правильно отключить во всем проекте warning "the feature 'corrutines' is experemental"?
kotlin {
experimental {
coroutines "enable"
}
}
прописал в gradle

Михаил
13.03.2017
04:37:29
вроде в настройках компилятора котлина было

Kirill
13.03.2017
05:07:27
возможно забыли прожать refresh gradle project в IDEA

Google

Igor
13.03.2017
06:31:29

Dmitry
13.03.2017
08:48:22
Всем привет! Господа, подскажите для чего в интерфейсы котлина включили приватные методы с обязательной реализацией - и как их вызывать? Пробовал имплементировать такой метод в класс и вызвать оттуда, получил ошибку доступа. А так было бы неплохо - можно бы было уйти от абстрактных классов. Пример:
interface BaseView {
private fun initView() {
//some realization
}
}
****
class MyFragment: Fragment, BaseView {
override fun onCreate(bundle: Bundle?){
initView() // access error
}
}


Alex
13.03.2017
08:56:39
Ну для того же, для чего и в обычном контексте их используют) Для сокрытия реализации)) Есть у тебя метод initView, в нем 100 строк реализации, ты разбиваешь их на логичные кусочки и раскидываешь в приватные методы. В итоге когда класс реализует этот интерфейс, ты получаешь только те методы, к которым тебе нужно дать доступ.
interface BaseView {
fun initView() {
someRealization()
}
}
private fun someRealization() {
foo()
bar()
}
private fun foo() {}
private fun bar() {
if(baz()) {
// do something
}
}
private fun baz(): Boolean {}
****
class MyFragment: Fragment, BaseView {
override fun onCreate(bundle: Bundle?){
initView()
}
}
Поэтому в принципе можно уже и уходить от абстрактных классов) Ну во всем конечно, но можно.

Igor
13.03.2017
09:04:48

Руслан
13.03.2017
09:07:29
Используйте форматирование кода:
fun code() {
println(42)
}

Dmitry
13.03.2017
09:09:19
хорошо, извиняюсь

Alex
13.03.2017
09:23:23

The mirror
13.03.2017
10:11:01
Кстати, в IDEA уже появилась поддержка написания gradle скриптов на котлине?
кто-нибудь пробовал?

Sergey
13.03.2017
10:21:31
https://github.com/mix-it/mixit/blob/master/build.gradle.kts

Aliaksei
13.03.2017
10:29:53
Там классный код, кстати, реактор и котлин во все щели

Sergey
13.03.2017
10:33:17
хипстерский репос)
5й спринг, 2й бут

Boris
13.03.2017
11:09:54
это вроде кто-то из работчиков спринга репу сделал

Руслан
13.03.2017
11:10:50
Да, Себастьян

Aliaksei
13.03.2017
11:10:55
Ага

Boris
13.03.2017
11:11:24
это я к тому, что хипстерство тут нипричем ?)

Руслан
13.03.2017
11:11:28
https://github.com/sdeleuze

Sergey
13.03.2017
11:53:55

Google

Artem
13.03.2017
18:47:03
А как из java когда обратиться к классу котлина?

Руслан
13.03.2017
18:47:59
Так же как к обычному джава классу

Artem
13.03.2017
19:22:16
Спасибо. Это я у себя просто напутал немного.
А может кто подсказать что по Singleton в котлине? Немного непонятно, несколько примеров разных в инете нашел

Pavel Shackih
13.03.2017
19:23:03
https://kotlinlang.org/docs/reference/object-declarations.html#object-declarations

Artem
13.03.2017
19:25:29
с помощью object я получается создаю singleton?

Igor
13.03.2017
19:25:46

Artem
13.03.2017
19:28:58
а как сделать singleton с dcl?)

Pavel Shackih
13.03.2017
19:29:13
ну и антипаттерн, но это не значит что его вообще нельзя использовать, не бывает же такого черного и белого. есть случаи когда это удобно и необходимо. да и вообще сама идея обжектов гораздно красивее и органичней в ооп язык ложится, в отличие от статиков джавы

Igor
13.03.2017
19:33:03
Хотя я вспомнил где это идеаматично - в sealed классах
sealed class Tree
class Node(val left: Tree, val x:Int, val right: Tree): Tree()
object Leaf: Tree()

Михаил
13.03.2017
19:36:58

Михаил
13.03.2017
19:37:12
и никаких лишних инстанс холдеров не создает

Igor
13.03.2017
19:38:18

Михаил
13.03.2017
19:39:00
он инициализируется лениво в нестатическом блоке
по идее и экономия памяти
и тред сейф

Artem
13.03.2017
19:40:38
спасибо, @angmarr , с обжектом самая понятная реализация
Как часто у кого крашится котлин плагин в андроид студии? У меня только что это произошло

Михаил
13.03.2017
19:46:25

Google

Михаил
13.03.2017
19:46:35
но он работает
после этого

Admin
ERROR: S client not available

Artem
13.03.2017
19:46:47
а, ладно) спасибо
что-то не понимаю почему не работает val handler = Handler() в андроиде ?
объясните кто-нибудь плиз)

Андрей
13.03.2017
20:41:31

Artem
13.03.2017
20:42:31
Спасибо большое) а то долго бы еще тупил

Андрей
13.03.2017
20:44:07
С хендлером это распостраненная проблема (не зря же и в соседнем чате на это подумали)

Egor
13.03.2017
20:45:16
ктото пробовал перебрать мапу через map.forEach { s, s -> } ?? похоже не работает

Artem
13.03.2017
20:46:21

Андрей
13.03.2017
20:54:14

Руслан
13.03.2017
20:54:35
Котлин 1.1 - да
Дестракчеринг в лямбдах есть

Egor
13.03.2017
20:56:10

Руслан
13.03.2017
20:56:35
data.forEach({ k, v -> println("$k=$v")})
Вот прям взял с проекта, все работает
скорее всего проблема в том что
s, s

Egor
13.03.2017
20:56:52
Что такой дестракчеринг?

Google

Андрей
13.03.2017
20:56:54
может это?
http://dl4.joxi.net/drive/2017/03/13/0020/1410/1373570/70/26f9e4e544.png

Egor
13.03.2017
20:57:27

Руслан
13.03.2017
20:58:03
Ну может у тебя андроид, и там нету еще мапки из java 8
Если котлин 1.1 можешь вот так написать:
data.forEach({ (k, v) -> println("$k=$v")})
ну а вообще к "не работает" нужно сразу текст ошибки прикладывать

Андрей
13.03.2017
21:02:01
есть еще такое http://dl3.joxi.net/drive/2017/03/14/0020/1410/1373570/70/70f0ba0d95.png Так что может из за того, что переменные без скобок объявлены?
Вон и у Руслана со скобками
Если котлин 1.1 можешь вот так написать:
data.forEach({ (k, v) -> println("$k=$v")})

Egor
13.03.2017
21:04:29
@Test
fun testMap() {
val map = hashMapOf( 1 to 1 )
map.forEach { key, value -> Ln.i("$key $value")}
}
работает тоже
странно, у меня код сложнее немного, у меня мапа - это дженерик, по идеи это не должно влиять на исполнение