@kotlin_lang

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

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
типа того)

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
А что, они как-то по другому переводятся? Раньше помнится называли "лямбда с ресивером", но это назване уже deprecated
ну так вроде и тупее звучит, но однозначнее. типа экстеншен лямбда можно подумать что расширение над (A -> B)

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

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

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
В Котлине init {} запускается после конструктора ? Или перед (как в Java) ?
http://kotlinlang.org/docs/reference/classes.html#constructors а вот тут ответа нет?

Прям скопирую даже: > 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
Или речь о каком-то кейсе который в самом очевидном месте документации не описан? ?

Руслан
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>()

Руслан
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: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
Если параметр обязательный, нет смысла продолжать работу, когда он null.
Да, если обязательный можно кинуть ParamsValidationException который попадет в стандартный Handler и отправит ответ с четкой ошибкой. Например.

То что неплохо бы декларировать 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
для этого можно сделать два разных метода
Потому что даже из reified дженерика не достать информацию о nullability?

Quantum Harmonizer
27.12.2017
14:44:13
Потому что даже из reified дженерика не достать информацию о nullability?
потому что один будет возвращать тип-сумму, а другой — бросать исключение)

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
Идентично ли setKey(a | b | c) в Java setKey(a.or(b).or(c)) в Kotlin ?
Да, причем можно писать вот так в котлине: setKey(a or b or c)

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
Понятие «переопределённые конструкторы» не имеет смысла, т. к. конструкторы не наследуются.

class A { constructor(a: A) constructor(b: B) }
это два вторичных

Dmytro
27.12.2017
16:13:32
class A { constructor(a: A) constructor(b: B) }
Что здесь первично ?

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

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

Siarhei
27.12.2017
16:14:55
локальный делегат, имя которое в первом случае я передаю явно, во втором случае берется из имени проперти: ids
а как имя проперти без рефлексии получить? или даже с рефлексией в контексте примера?

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

Quantum Harmonizer
27.12.2017
16:17:46
Окей, т.е. именование первичный и вторичный конструктор это только названия не несущие за собой особого смысла
Первичный конструктор объявляется в заголовке класса, до его тела. И в нём можно объявлять свойства — var, val.

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.

Непонятка

Страница 467 из 982