
Stanislau
06.03.2018
10:12:58
Потому что там где результат 3, то число 3.0F

Bogdan
06.03.2018
10:13:48

Stanislau
06.03.2018
10:14:06
Так и сделал. Но некрасиво. Math.round((int.toFloat / int.toFloat) * 10)

Георгий
06.03.2018
12:17:17

Google

Mikhail
06.03.2018
12:34:35

Stanislau
06.03.2018
12:35:46
спасибо за советы

Жабра
06.03.2018
12:40:55
По поводу DI вместо синглтонов - "правильно" ли я сделал, что переделал object-ы на class-ы, и просто однажды инициализирую отдельно вынесенную вне классов переменную и юзаю её?
Ну в тех случаях, когда синглтон всё же имеет зависимости.

Oleg
06.03.2018
12:47:20
String... strings, как такое множество написать на котлине ?

Alex
06.03.2018
12:50:05
fun f(vararg strings: String)

Andrew
06.03.2018
12:58:19
Ну в тех случаях, когда синглтон всё же имеет зависимости.
"Настоящий" синглтон по определению не может иметь зависимостей, потому да, правильно. В ситуации с ивентбасом и рефлексией лучше всё равно не сделаешь, на мой взгляд. Вполне логично держать в отдельном контейнере все сервисы, которые в качестве зависимости получают шину и дальше живут своей жизнью.

Жабра
06.03.2018
12:58:49

Vladislav
06.03.2018
14:10:17
Не допру куда .!! вставить
Вообще как в котине со стримами, норм?

Alex
06.03.2018
14:11:18
authorities!!
А вообще стримы не нужны

Google

Alex
06.03.2018
14:11:45
Есть куча эктеншн-методов, которые делают стримы ненужными
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/index.html

Руслан
06.03.2018
14:13:01
тут скорее Mutable в Immutable запихивается

Vladislav
06.03.2018
14:13:54

Alex
06.03.2018
14:14:09
В джаве, не в Котлине.

Руслан
06.03.2018
14:17:37
скопируй текст ошибки из консоли в общем и покажи весь код

Dibro
06.03.2018
14:18:03

Руслан
06.03.2018
14:18:09
какой тип в контрукторе не видно

Dibro
06.03.2018
14:18:30
val list: List<Any> = mutableListOf()

Руслан
06.03.2018
14:18:43
да, я тупанул

Vladislav
06.03.2018
14:43:12
Но за наводку по коллекциям спасибо, похоже функционал стримов они поддерживают

Руслан
06.03.2018
14:43:53
Ну и текст ошибки неправильный :)

Vladislav
06.03.2018
15:57:56
Есть такой код:
val textInputLayout : TextInputLayout = when (formField.fieldIdentifier){
SignUpPresenter.FormIdentifier.FIRST_NAME -> textInputLayoutFirstName
SignUpPresenter.FormIdentifier.LAST_NAME -> textInputLayoutLastName
SignUpPresenter.FormIdentifier.PATRONYMIC -> textInputLayoutPatronymic
SignUpPresenter.FormIdentifier.PHONE_NUMBER -> textInputLayoutPhoneNumber
}
Как-нибудь можно не повторять SignUpPresenter.FormIdentifier. как это было в старушке яве?

Siarhei
06.03.2018
15:59:33
да

Жабра
06.03.2018
15:59:51
data class Conversation (
val contact: Contact,
val messages: ArrayList<Message> = ArrayList(),
val messageChannel: Channel<Message> = Channel()
)
Почему когда обращаюсь к каналу, он просит меня удостовериться, что тот не null??

Vladislav
06.03.2018
16:00:51

Bogdan
06.03.2018
16:01:09

Vladislav
06.03.2018
16:01:10

Google

Жабра
06.03.2018
16:01:11
Убираю проверку - ругается.

Bogdan
06.03.2018
16:02:24
?

Жабра
06.03.2018
16:02:47

Gleb
06.03.2018
16:02:53
conv?.messageChannel - nullable
((conv)?.messageChannel)?.send(...)

Bogdan
06.03.2018
16:03:54

Жабра
06.03.2018
16:04:04
Ор

Bogdan
06.03.2018
16:04:49
var c: Conversation
норм
val c: Conversation?
- делаешь проверки

Gleb
06.03.2018
16:05:16
если не хочешь проверять всю цепочку, пиши с let
conv?.let {
it.messageChannel.send(...)
}

Жабра
06.03.2018
16:05:52

Lev
06.03.2018
17:45:27
https://github.com/nosix/vue-kotlin/tree/master/vuekt-plugin
Как этот плагин работает?
Конретно Js2VueTask - не понятно "node <js2vue translator>.js" - что за кавычки угловые такие

Kirill
06.03.2018
17:48:40

Lev
06.03.2018
17:49:36
Спасибо (матерится)

Kirill
06.03.2018
17:49:54
а ты в идее код смотришь или прямо на гитхабе?


Lev
06.03.2018
17:52:58
В идее. Я не догадался посмотреть куда код идет. Я редко работал со сторонними либами, обычно ридми прочитал и ок. А тут мне очено хочется vue+kotlin. Вроде, сам плагин простой, но я не понимаю как он срабатывает. Этот проект, что я скинул, мне кажется слегка усложненным. Я пытаюсь разобраться как именно он работает, потому что хочу использовать его в своем рабочем проекте. А так как этот nosix забил на проект (я спрашивал), мне надо быть уверенным, что в случае чего я сам допилю проект.
В оправдание могу сказать что имя аргумента name чет совсем не говорящее...
А... он просто сами файлы запускает...
Наконец то...
ProcessBuilder(nodeCommand.absolutePath, script.absolutePath)
.directory(workingDir)
.apply { environment().put("NODE_PATH", nodeModulesDir.absolutePath) }
.startWithRedirectOnFail(project, "node <js2vue translator>.js")
Он просто сами файлы запускает. А в файлах есть вызов, функции, который переделает сами эти файлы в .vue
Либу японец писал. А я все искал что же он там запускает и недоумевал зачем перевод в vue делать в самом же котлин-файле. Типа как же он это в рантайме переводит, надо же до рантайма

Google

Albert
06.03.2018
18:08:06
ребят. у кого-нибудь было такое что kapt3 генерил неправильные java классы
у меня почему-то генерируются java классы (которые с kt идут) со старыми значениями полей

Admin
ERROR: S client not available

Vladislav
06.03.2018
18:44:43

Lev
06.03.2018
18:45:11
Ща вообще не понял... посмотрю kotlin react

Vladislav
06.03.2018
18:47:11

Lev
06.03.2018
19:22:26
А что конкретно непонятно?
"проще написать небольшой wrapper и билдер для рендер функции" - рендер функции чего и как это вообще будет работать?

Vladislav
06.03.2018
19:30:57
В Vue, компоненты можно не только с помощью шаблонов, но и с помощью рендер-функций описывать. Если создать свой dsl, который будет реализовывать логику этих рендер-функций, то компоненты будет так же легко описывать как и html шаблоны в kotlinx.html. Посмотрите статью на kotlinlang про type-safe builders.

Lev
06.03.2018
19:32:48
Но ничто не мешает его написать на билдере а потом просто плагином это исполнить
Я вот не могу этот плагин никак запустить, там устаревшие версии чтоли... Обнволяю версии - вообще все сыпется
И совсем не понятно как он находит отдельный js файлы после котлина. Я думал они пишутся сразу в один файл

Vladislav
06.03.2018
19:34:07
Плагин это лишняя сложность, это нужно в небольшую библиотеку выносить

Lev
06.03.2018
19:34:47
Давайте в личку

Bogdan
06.03.2018
20:21:30
Да что вы
Это может еще кому-то пригодится

Tipok
07.03.2018
08:05:41
interface OnChangeListener {
fun onChange(uri: Uri, uri1: Uri)
}
fun Builder(uri: Uri, listener: OnChangeListener)
в Java запускаю эту ф-цию так:
BrowserObserver.Companion.Builder(uri, this::handleUri); //Где handleUri это ф-ция:
private void handleUri(Uri listenedUri, Uri emittedUri)
как это будет выглядеть в kotlin?

Quantum Harmonizer
07.03.2018
08:08:00

Tipok
07.03.2018
08:18:44

Quantum Harmonizer
07.03.2018
08:19:04

Google

Dibro
07.03.2018
08:20:17

Tipok
07.03.2018
08:20:58
Спасибо

Глеб
07.03.2018
08:47:07
Господа, нужна ваша помощь. Есть документация по sealed class'ам - http://kotlinlang.org/docs/reference/sealed-classes.html
Есть сами классы
sealed class State {
object Offline : State()
data class Online(val authenticated: Boolean) : State()
data class Recovering(val count: Int) : State() {
fun delay(): Long = TimeUnit.SECONDS.toMillis(count.toLong())
fun canRecover(): Boolean = count < 30
}
}
И вот что-то смарт-каст не работает
https://i.imgur.com/6l61Uup.png
Подозреваю, что дело в том, что state - это property и var

whalemare
07.03.2018
08:49:05

Глеб
07.03.2018
08:50:03
Эх, либо я опять в глаза долблюсь, либо этот нюанс в документации несколько опущен

whalemare
07.03.2018
08:50:24

Alexey
07.03.2018
09:02:49