
Sergey8827
27.12.2017
11:00:40
если честно
---это называется тра**нуть джаву--

Anton
27.12.2017
11:01:07
а слушай я наврал. не только в праймари

Sergey8827
27.12.2017
11:02:59
да не лучше уж так
class GoogleMapsRestApiClient constructor(val baseUrl: String) {
constructor() : this("https://api.whatever.com/")
}

Google

Sergey8827
27.12.2017
11:03:29
то есть через this --- поле обязательно заполнять

Anton
27.12.2017
11:04:17
ну потому что у тебя праймари конструктор с параметром)

Sergey8827
27.12.2017
11:04:46
типа того)

? animufag ?
27.12.2017
11:33:00

Igor
27.12.2017
11:36:21
что это
К прамеру f в конструкции типа
fun <T> foo(f: T.() -> Unit) = TODO()

Andrew
27.12.2017
11:41:22
Пугаете тут, я уже заметку себе мысленно оставил, что пора документацию перечитать. ?

Igor
27.12.2017
11:46:58
А что, они как-то по другому переводятся? Раньше помнится называли "лямбда с ресивером", но это назване уже deprecated

Sergey8827
27.12.2017
11:48:09
у меня поля с анотациями -- как их сделать в праймери конструткторе
@SerializedName("senderid")
var senderId: String = ""
@SerializedName("name")
var senderName = ""
????

Andrew
27.12.2017
11:48:52
я отвечал на утверждение про праймари конструкторы. мобильные интернеты, сэр.

? animufag ?
27.12.2017
11:49:17

Руслан
27.12.2017
11:49:33

Sergey8827
27.12.2017
11:49:37

Google

Sergey8827
27.12.2017
11:50:02

? animufag ?
27.12.2017
11:54:30
крч есть в проекте одно использование этой экстеншен лямбды, но там то же самое что и в анко: отложенная инициализация компонента

Konstantine
27.12.2017
12:41:47
Шо делать. Пишу тесты, но в приложении используется Kotpref.
В местах где он используется внутри выдает ошибку Kotpref has not been initialized, как быть?

Руслан
27.12.2017
12:45:59

Konstantine
27.12.2017
12:46:55

Руслан
27.12.2017
12:46:59
Открыл доку, вижу:
Kotpref.init(context)
Сделать инициализацию в тестах видимо?
Ну там в @Before например

Konstantine
27.12.2017
12:50:56
Я и спрашиваю - как это сделать? Как в данном случае правильно мокнуть контекст, чтобы заинитить котпреф

Руслан
27.12.2017
12:52:15
Как мокать андроид контектсы думаю объяснят в @android_ru или @kotlin_mobile

Dmytro
27.12.2017
12:59:05
В Котлине init {} запускается после конструктора ? Или перед (как в Java) ?

? animufag ?
27.12.2017
12:59:51
где такой в джава инит есть?

Dmytro
27.12.2017
13:00:29
{}
Блок инициализации

Alexander
27.12.2017
13:01:01
Либо lateinit var применить

Dmytro
27.12.2017
13:01:41

? animufag ?
27.12.2017
13:02:10

Руслан
27.12.2017
13:02:22
Прям скопирую даже:
> Note that code in initializer blocks effectively becomes part of the primary constructor. Delegation to the primary constructor happens as the first statement of a secondary constructor, so the code in all initializer blocks is executed before the secondary constructor body.

? animufag ?
27.12.2017
13:03:08
то есть я себе могу представить разве что
static {
}

Google

? animufag ?
27.12.2017
13:03:19
но ты видимо о другом

Руслан
27.12.2017
13:04:04
Или речь о каком-то кейсе который в самом очевидном месте документации не описан? ?

Dmytro
27.12.2017
13:05:36

Руслан
27.12.2017
13:07:29

Igor
27.12.2017
13:17:12
Оу, тут CLion с Котлин Native раздают (на 4 месяца)
https://blog.jetbrains.com/kotlin/2017/12/kotlinnative-plugin-update/

Vitalii
27.12.2017
13:30:12
Оп, спасибо

Руслан
27.12.2017
14:12:24

Siarhei
27.12.2017
14:13:25
а как 2 вариант работает?

Руслан
27.12.2017
14:13:45
можно даже так, но имхо это уже слишком сложно может показаться
val ids by exchange.queryParams<String>()

Vitalii
27.12.2017
14:14:12

Руслан
27.12.2017
14:14:29
а как 2 вариант работает?
локальный делегат, имя которое в первом случае я передаю явно, во втором случае берется из имени проперти: ids

Quantum Harmonizer
27.12.2017
14:14:33
Мне кажется, нужно объявлять объект, который описывает параметры запроса. Типа
class SomeEndpointRequest(
val ids: List<String>
)
и парсить параметры запроса в эту структуру. А если не удалось — возвращать 400.
Как Spring делает для параметров метода-эндпоинта, только без грязной магии.

Руслан
27.12.2017
14:16:43

Quantum Harmonizer
27.12.2017
14:16:46

Руслан
27.12.2017
14:16:46
ну окей, я же этими же делагатами могу в объекте распрасить) в том смысле что я делаю так:

Quantum Harmonizer
27.12.2017
14:17:03
а если параметра нет на месте?

Руслан
27.12.2017
14:17:30
null

Quantum Harmonizer
27.12.2017
14:19:17
Я не хочу !! в своём коде. Предаочёл бы получить объект-затычку, если хоть один из обязательных параметров не передан.

Руслан
27.12.2017
14:20:24
зачем
!!
?

Google

Quantum Harmonizer
27.12.2017
14:20:51
Если параметр обязательный, нет смысла продолжать работу, когда он null.
параметра не хватает — получили объект, намекающий на то, что параметр не передан — вернули 400

Руслан
27.12.2017
14:26:30
То что неплохо бы декларировать required - это тоже верно, я пока покрыл кейс только не обязательных параметров. Но с другой стороный каждый захочет по своему обрабатывать такой кейс.
Кто-то через Result, кто-то через Exception

Quantum Harmonizer
27.12.2017
14:36:23
для этого можно сделать два разных метода

Admin
ERROR: S client not available

Руслан
27.12.2017
14:36:50
Можно отдать на откуп пользователю

Pash
27.12.2017
14:42:23
Добрый вечер
Может ли кто то помочь доделать RIA-приложение?
Есть исходники на котлине, нужно добавить форму в SceneBuilder

Руслан
27.12.2017
14:43:45

Quantum Harmonizer
27.12.2017
14:44:13

Ivan
27.12.2017
14:48:57
[2]

Руслан
27.12.2017
15:24:29

Dmytro
27.12.2017
15:26:54
Идентично ли
setKey(a | b | c) в Java
setKey(a.or(b).or(c)) в Kotlin
?

Руслан
27.12.2017
15:30:50

Dmytro
27.12.2017
15:32:12
Спасибо
Правильно ли я понимаю, что если нет дефолтного конструктора у класса от которого наследуюсь, то в своем классе все переопределенные конструкторы будут первичными ?
Хотя, впрочем как и у класса от котрого наследуюсь

Quantum Harmonizer
27.12.2017
16:12:55
Первичным может быть только один конструктор.

Dmytro
27.12.2017
16:13:15
class A {
constructor(a: A)
constructor(b: B)
}

Google

Quantum Harmonizer
27.12.2017
16:13:19
Понятие «переопределённые конструкторы» не имеет смысла, т. к. конструкторы не наследуются.

Dmytro
27.12.2017
16:13:32

Quantum Harmonizer
27.12.2017
16:13:49
здесь просто нет первичного конструктора)

Dmytro
27.12.2017
16:14:25
это два вторичных
Почему тогда блок init {} вызывается после конструктора ? А не перед ?

Siarhei
27.12.2017
16:14:55

Quantum Harmonizer
27.12.2017
16:14:57

Dmytro
27.12.2017
16:16:45
Окей, т.е. именование первичный и вторичный конструктор это только названия не несущие за собой особого смысла

Quantum Harmonizer
27.12.2017
16:17:46

Dmytro
27.12.2017
16:18:32

Quantum Harmonizer
27.12.2017
16:18:44
«похоже» — это как?

Dmytro
27.12.2017
16:19:23
Блок init должен вызыватся после первичного, однако перед вторичными
Но при отсутствии первичного, это не так

Quantum Harmonizer
27.12.2017
16:20:35

Pavel
27.12.2017
16:21:08
Парни подскажите момент
Есть 10 users (list) и каждого юзера есть 10 books (list)
Нужно найти первую попавшуюся книгу по названию.
Как бы это поэлегантней сделать.

Dmytro
27.12.2017
16:21:20
Прям скопирую даже:
> Note that code in initializer blocks effectively becomes part of the primary constructor. Delegation to the primary constructor happens as the first statement of a secondary constructor, so the code in all initializer blocks is executed before the secondary constructor body.
Непонятка