
DY
10.05.2018
19:43:46
да у меня все ок с ним. используется давно в проекте. просто впервые решил buildString заюзать.
должна быть какая-то связь с тем, что kotlinx.serialization кроссплатформенный ? мб его плагин виной

Bogdan
10.05.2018
19:48:14

DY
10.05.2018
19:50:46
повыкидывал все зависимости кроме виновника проблемы, вообще чистота, версии котлина в kotlinx.serialization и у меня в проекте совпадают ?♂ но проблема остается

Google

Andrew
10.05.2018
20:36:10
а они рядышком определены
Странненько, ибо в стдлибе одна декларация:
https://github.com/JetBrains/kotlin/blob/1.2.40/libraries/stdlib/src/kotlin/text/StringBuilder.kt
(да и expect-вариант подменяется actual typealias почти наверняка).
Точно, оно даже не в jdk* определено, а в jvm, что логично:
https://github.com/JetBrains/kotlin/blob/1.2.40/libraries/stdlib/common/src/kotlin/TextH.kt
https://github.com/JetBrains/kotlin/blob/1.2.40/libraries/stdlib/jvm/runtime/kotlin/text/TypeAliases.kt
Я правда без идей, откду могут браться разные декларации, если версия стдлиб одна. Может, завтра знающие люди помогут :)

DY
10.05.2018
20:42:18

Andrew
10.05.2018
20:44:39
Ах же ж. Есть ещё просто stdlib, точно.

DY
10.05.2018
20:44:41
учитывая, что package одинаковые, не представляю, как это разрулить. мб исключить stdlib-common из зависмостей.. вообще проблема не глобальная, я могу и обойтись без этой функции, или свою написать. скорее просто интересно было

Andrew
10.05.2018
20:46:19
Без stdlib-common перестанет по идее работать то, что строится на мультиплатформе. Я бы попробовал наоборот выкинуть обычный stdlib.

DY
10.05.2018
20:47:27
а actual для jvm платформы не в нём определены? вообще не ориентируюсь в анатомии котлин либ

Andrew
10.05.2018
20:47:40
В common + jvm + опционально jdk8 должно быть всё то же, что есть в обычном stdlib.

DY
10.05.2018
20:48:52
хм. ладно, спасибо за помощь) поэкспериментирую потом

Andrew
10.05.2018
21:01:40
Да, правильно вы говорите, в stdlib и определены actual для JVM. Так что запутался я :) Сбило с толку, что есть libraries/stdlib/{common,jvm,jdk8}/src, а есть просто libraries/stdlib/src.
Правда, я не увидел, чтобы buildString в двух местах была определена. Завтра с десктопа посмотрю.

DY
10.05.2018
21:14:45

Google

DY
10.05.2018
21:17:08
похоже просто артефакты собираются из одного модуля, из одних исходников ?♂️
надо наверное поковырять мультиплатформу на досуге, чтоб понимание пришло

Andrew
11.05.2018
12:26:32
Подскажите, а почему нельзя использовать тернарный оператор в однострочной функции наподобие:
fun foo(toUpperCase: Boolean, name: String) = toUpperCase ? name.toUpperCase() : name

Gleb
11.05.2018
12:27:49
конечно не так красиво, как с тернарным, но работает так же

Andrew
11.05.2018
12:28:43
Ага, спасибо! Я так и написал, просто хотелось понять подоплеку.

Quantum Harmonizer
11.05.2018
12:29:05

Andrew
11.05.2018
12:29:32
:D

Жабра
11.05.2018
12:29:40

Quantum Harmonizer
11.05.2018
12:30:11
чёт вообще странный код :)

Gleb
11.05.2018
12:30:29

Andrew
11.05.2018
12:30:53
https://discuss.kotlinlang.org/t/ternary-operator/2116/8 а вот кастати дискуссия по поводу тернарного оператора

Gleb
11.05.2018
12:31:12

Andrew
11.05.2018
12:31:22
Код просто пришедший из головы)

Kirill
11.05.2018
12:31:43

Quantum Harmonizer
11.05.2018
12:32:53

Max
11.05.2018
12:35:42
потому что конструкция if else его заменяет?

Alexander
11.05.2018
12:36:57
Конкретно моё мнение:
1. Впринципе if-else может делать тоже самое.
2. Тернарный оператор очень располагает к нечитаемому использованию:
a ? b : c это обычно смотрится хорошо, наверное даже лучше, чем if (a) b else c
a ? (b ? c : d) : e или какая-либо другая вложенность смотрится мягко говоря сложно.
С помощью if-выражений можно расписать намного читабельнее.
Итого - есть один простой кейс, в котором иногда тернарный оператор смотрится чуть-чуть лучше чем if-else (отмечу, что if-else смотрится неплохо при if-else выражениях, а не присваиваниях как в джаве). И есть куча кейсов, когда лучше не использовать тернарный оператор. И ради одного действительно небольшого улучшения нужно ли вводить целый оператор?

Google

Alexander
11.05.2018
12:38:39
Ну ещё высказывались сомнения из-за использования двоеточия уже в других местах.

Quantum Harmonizer
11.05.2018
12:41:57
Ещё нюанс в том, что в PHP и Java он работает в разных направлениях.

Андрей
11.05.2018
12:45:01
sealed классы например в C# и котлин тоже работают в совершенно разных направлениях

Bogdan
11.05.2018
13:50:21
Опять 25
Пятница день сра@а

OlegKrikun
11.05.2018
14:00:08
Так, а что картинки постить нельзя?
Почему то сообщение со скриншотом удалилось

Egor
11.05.2018
14:03:37
Обычно с таким вопросом посылают в @android_ru
Но почему там @JvmOverloads?

Va
11.05.2018
14:04:16

OlegKrikun
11.05.2018
14:04:20
потому что констрстор у вьюшки то не один

Egor
11.05.2018
14:05:21

Quantum Harmonizer
11.05.2018
14:05:39
попробуй сгенерить 4 честных конструктора, которые вызывают супер с таким же количеством параметров

Rustem
11.05.2018
14:05:40
Снова здравствуйте

Quantum Harmonizer
11.05.2018
14:05:54

Igor
11.05.2018
14:05:54
а точно не из-за того, что defStyleAttr = 0? =)

OlegKrikun
11.05.2018
14:10:30

Google

OlegKrikun
11.05.2018
14:10:56
Всем спасибо. Привык когда вьюгруппы переопределяешь ноль туда кидать =)

Quantum Harmonizer
11.05.2018
14:11:12
а надо что?)

Igor
11.05.2018
14:11:35
public AppCompatEditText(Context context, AttributeSet attrs) {
this(context, attrs, R.attr.editTextStyle);
}

Quantum Harmonizer
11.05.2018
14:11:51
а, да

OlegKrikun
11.05.2018
14:11:59
да

Quantum Harmonizer
11.05.2018
14:12:31
ой, забыл в самом начале послать в @kotlin_mobile :)

Konstantine
11.05.2018
14:34:45
sealed class Device(
val id: Long,
val lat: Double,
val long: Double
) {
class Camera(id: Long, lat: Double, long: Double) : Device(id, lat, long)
class Sendor(id: Long, lat: Double, long: Double) : Device(id, lat, long)
class Controller(id: Long, lat: Double, long: Double) : Device(id, lat, long)
}
Можно ли как-то обойти эти повторения в конструкторе?
А то если что-то добавляется\меняется, то это надо в куче мест сделать. :(

Quantum Harmonizer
11.05.2018
14:35:38
запилить свойстка из базового класса в отдельный класс)

Kirill
11.05.2018
14:35:41
можно сделать поля в sealed class abstract, а в наследниках в конструкторе override
(такое себе конечно, но кода меньше)

Konstantine
11.05.2018
14:36:43

Quantum Harmonizer
11.05.2018
14:37:00

Adv0cat
11.05.2018
14:37:05
Всем привет, посижу почитаю вас тут тихонько ?

Konstantine
11.05.2018
14:37:32

Виталий
11.05.2018
14:48:35

Quantum Harmonizer
11.05.2018
14:50:11
И это страшно.

OlegKrikun
11.05.2018
14:51:05

Egor
11.05.2018
14:52:18
Кто-нибудь, сделайте голосование

Google

Egor
11.05.2018
14:52:40
Вот два варианта реакции сверху
Какое-то нечестное голосование было

Mikhail
11.05.2018
14:54:41

Виталий
11.05.2018
14:55:02
он сказал вопрос в том как заюзать ":"

OlegKrikun
11.05.2018
14:55:06

Виталий
11.05.2018
14:55:10
и уже после этого решать вопрос про тернарник

Konstantin
11.05.2018
14:55:30

Va
11.05.2018
14:55:41

Egor
11.05.2018
14:55:54