
Va
29.08.2018
18:34:06
Тогда это не Component<T1,T2,T3> а Component<Int, чтото что-то>

Quantum Harmonizer
29.08.2018
18:34:18

Bogdan
29.08.2018
18:34:19

Quantum Harmonizer
29.08.2018
18:34:38

Google

Va
29.08.2018
18:34:46
Реифайд будет подразумевать, что ты заранее знаешь тип.

Bogdan
29.08.2018
18:34:50

Va
29.08.2018
18:34:59

Quantum Harmonizer
29.08.2018
18:35:24

Bogdan
29.08.2018
18:35:38

Mikhail
29.08.2018
18:36:24
Ловите гофера!

Va
29.08.2018
18:36:54

Bogdan
29.08.2018
18:37:14
кстати к слову, вы уже вкурсе слухов что в го (следущей можорной версии, не помню точно какой) введут дженерики

Andrew
29.08.2018
18:37:33
а ты гошник
Прекращай на личности переходить, ты своим поведением дискредитируешь плюсы паттерн матчинга :)

Quantum Harmonizer
29.08.2018
18:37:34

Mikhail
29.08.2018
18:37:55

Bogdan
29.08.2018
18:38:02

Google

Bogdan
29.08.2018
18:38:16

Quantum Harmonizer
29.08.2018
18:38:21

Va
29.08.2018
18:38:22

Mikhail
29.08.2018
18:39:07
Почитай про pattern matching

Andrew
29.08.2018
18:39:41

Quantum Harmonizer
29.08.2018
18:39:43
как исользовать дженерики объяснил, с меня хватит )

Mikhail
29.08.2018
18:41:56
Кстати, а я keep могу просто так разместить или надо сначала JB поспрашивать?

Quantum Harmonizer
29.08.2018
18:42:48
и сразу стоит показать хорошие примеры использования

Va
29.08.2018
18:47:27
можно написать функцию типа <T> Component<*, *, T>.whatever(t: T, blah...), будет работать
data class Triple<T1, T2, T3>(val first : T1, val second: T2, val third: T3)
fun <T> Triple<*, *, T>.copyThird(t: T) = copy(third = t)
чем так плохо ?
или нужен component#() — юзай
зачем заставлять генерить интерфейс ?
данные не должны уметь в логику, такую туплу можно переюзать для любых типов, в чем беда-то ?

Bogdan
29.08.2018
18:48:37
я теперрь понял изза кого, на ооп наговаривают

Va
29.08.2018
18:49:28
зачем, если это скомпилится и будет работать ?

Bogdan
29.08.2018
18:49:28
про генерацию только ты говорил

Va
29.08.2018
18:51:41

Bogdan
29.08.2018
18:52:32

Va
29.08.2018
18:52:50

Google

Va
29.08.2018
18:55:30
data class Triple<T1, T2, T3>(val first : T1, val second: T2, val third: T3)
fun <T> Triple<*, *, T>.matchThird(matcher: (T) -> Boolean) = takeIf { matcher(component3()) }
вот вам матчер

Bogdan
29.08.2018
19:00:02

Andrew
29.08.2018
19:00:13

Va
29.08.2018
19:00:21

Andrew
29.08.2018
19:00:29

Bogdan
29.08.2018
19:00:40
сколько прходит людей у которых банальное непонимание ? которым лень доку почитать\перечитать

Va
29.08.2018
19:01:43

Andrew
29.08.2018
19:01:47

Bogdan
29.08.2018
19:02:01

Andrew
29.08.2018
19:02:19

Va
29.08.2018
19:02:46

Va
29.08.2018
19:03:08
если в стдлиб — писать пакован одинаковых функций, как это сделали RX

Bogdan
29.08.2018
19:03:19

Andrew
29.08.2018
19:03:42

Va
29.08.2018
19:03:48
если нет — кодоген
для этого не обязательна фишка в компиляторе языка, можно написать свою либу с использованием любого фреймворка для кодогена

Bogdan
29.08.2018
19:04:04
так надо или не надо ?
я не за и не против, но горидит костыли из дата классов я бы не стал, это потом подерживать неочень

Va
29.08.2018
19:04:15
а у себя использовать тайпалиасы, например

Andrew
29.08.2018
19:04:47

Google

Va
29.08.2018
19:05:28
ну так, а в чем тогда вопрос был ?
почему это не сделали по дефолту в языке ?

Bogdan
29.08.2018
19:05:35

Andrew
29.08.2018
19:05:53

Bogdan
29.08.2018
19:05:55

Va
29.08.2018
19:06:07

Andrew
29.08.2018
19:06:33

Bogdan
29.08.2018
19:06:49
Кстати, есть ли какое нибудь обьяснение, почему нет интерфейса для объектов с componentN? Можно было бы очень классные вещи делать

Va
29.08.2018
19:07:11

Admin
ERROR: S client not available

Andrew
29.08.2018
19:08:18

Va
29.08.2018
19:09:22

Andrew
29.08.2018
19:10:21
Я не то, чтобы спорю, мне без паттерн-матчинга нормально живётся, но людям, которые активнее применяют функциональный подход, он важнее.
Линку на ПМ в F# уже кидали.
Появится KEEP -- можно будет обсудить его. Пока я не вижу, чтобы текущая дискуссия с места двигалась. :)

Va
29.08.2018
19:13:13

Sergey
29.08.2018
19:54:43
Кто-то может объяснить почему suspend функция в байт-коде приобретает возвращаемый тип object?

Igor
29.08.2018
19:55:57
Что бы возращать либо результат (если внутри весь код был синхронный) либо флаг что результат вернется в колбеке

Sergey
29.08.2018
20:02:10
Хорошо. Были у меня две функции в одном классе`foo(): Int` и `<T> foo: T` и всё с ними было хорошо пока не понадобилось к ним добавить модификатор suspend.
Есть ли ещё подобные подводные камни и описываются ли они где-то хорошо?

Igor
29.08.2018
20:06:32
Если вернешь из синхронной supend функции intrinsics.COROUTINE_SUSPENDED - то приложение зависнит ?

Roman
29.08.2018
20:19:47

Google

Sergey
29.08.2018
20:24:58

Dmitry
30.08.2018
04:31:04
Всем привет, кто-нибудь смотрел байкод или замерял производительность, когда пишешь apply(this::someMethod) или apply {someMethod(this)}?
есть разница?

Roman
30.08.2018
05:21:59
Cmd+Shift+A -> Show Kotlin Bytecode

Quantum Harmonizer
30.08.2018
05:56:39

Sergey
30.08.2018
08:33:42
Привет, подскажите, плз:
Есть springboot есть тесты на него
Тесты написаны с некоторой иерархией
Парент класс написан на котлине и у него есть аннотация @DirtiesContext
Часть конкретных легаси тестов написаны на джаве и унаследованы от парента на котлина, но при их запуске аннотация @DirtiesContext ничего не делает.
Кто нибудь сталкивался?

Igor
30.08.2018
08:57:39
Всем привет!
Есть ли универсальная функция для автозамены текста кириллицы на латиницу в инпутах?

Денис
30.08.2018
08:58:57

Igor
30.08.2018
09:00:28
Грубо говоря, пишем как-то так?
function() {
var
rus = "щ ш ч ц ю я ё ж ъ ы э а б в г д е з и й к л м н о п р с т у ф х ь".split(/ +/g),
eng = "shh sh ch cz yu ya yo zh `` y' e` a b v g d e z i j k l m n o p r s t u f x `".split(/ +/g)
;
Или же всё-таки лучше условие применить?

Денис
30.08.2018
09:01:42
То есть посмотрев, например, в российские паспорта, выданные 8 лет назад и сейчас, можно увидеть некоторые отличия - например, Я с транскрипцией [йа] раньше транслитерировалось в "ya", теперь в "ia".
-кс- теперь тоже транслируется в -ks-, например.

Igor
30.08.2018
09:02:57
if (this.value.match(/[^a-zA-Z0-9 ]/g)) {
this.value = this.value.replace(/[^a-zA-Z0-9 ]/g, '');
Такое решение будет работать, в таком случае?
Или вместо replace скорее switch?

Vladimir
30.08.2018
09:35:18
Кто-нибудь в курсе, о чём говорит сообщение
w: Detected multiple Kotlin daemon sessions at build/kotlin/sessions
при сборке Gradle-проекта?

Dmitry
30.08.2018
09:48:59

Gregory
30.08.2018
10:15:11
Подскажите, как из ktor приложения замутить сервис под Ubuntu? Может есть что-то готовое?

Denis
30.08.2018
10:29:09
Добрый день. Подскажите как правильно (красиво) в котлине связать 2 observable, как ни пытаюсь, у меня все по джавовски получается, т.е. профита от котлине получаю :(
мои обсы:
Observable.fromCallable { reg_et.setOnKeyListener{ view, i, keyEvent ->
if(keyEvent.action == KeyEvent.ACTION_UP){
presenter.onRegNumberChange(reg_et.editableText.toString(), passport_et.editableText.toString())
}
false
} }
reg_et.afterTextChangeEvents()
.map {reg_et.changeText(it.toUpperCase())}
.map {reg_et.changeText(presenter.formatRegNumber(it))}
.subscribe {
presenter.onRegNumberChange(it.toString(), passport_et.editableText.toString()) }
.addTo(disposable)


Maxim
30.08.2018
10:33:40
Добрый день. Подскажите как правильно (красиво) в котлине связать 2 observable, как ни пытаюсь, у меня все по джавовски получается, т.е. профита от котлине получаю :(
мои обсы:
Observable.fromCallable { reg_et.setOnKeyListener{ view, i, keyEvent ->
if(keyEvent.action == KeyEvent.ACTION_UP){
presenter.onRegNumberChange(reg_et.editableText.toString(), passport_et.editableText.toString())
}
false
} }
reg_et.afterTextChangeEvents()
.map {reg_et.changeText(it.toUpperCase())}
.map {reg_et.changeText(presenter.formatRegNumber(it))}
.subscribe {
presenter.onRegNumberChange(it.toString(), passport_et.editableText.toString()) }
.addTo(disposable)
или combineLatest, если тебе нужны оба значения, но тогда нужно гарантировать, что Observable стартанет с emit текущего значения