@kotlin_lang

Страница 345 из 982
Maxim
24.09.2017
16:46:51
я считаю что тут 2 необходимо вещи сделать: 1. Использовать kotlin extensions 2. !! заменить на ?

Google
Quantum Harmonizer
24.09.2017
16:49:17
см. пункт 1
использование extensions спрячет логическую ошибку, и человек сделает неправильно уже в другом месте

Maxim
24.09.2017
16:50:11
Что бы делать все нулабельным и не проверять на null у меня java есть

там как раз этот вариант: https://t.me/kotlin_lang/34395

Quantum Harmonizer
24.09.2017
16:52:25
Что бы делать все нулабельным и не проверять на null у меня java есть
Чтобы проверять на null то, что реально нуллабельно, а не чтобы маскировать ошибки.

Maxim
24.09.2017
16:55:31
Quantum Harmonizer
24.09.2017
16:56:45
каким боком !! производит проверку на null?
Я не говорил, что !! производит проверку на null.

DasModell
24.09.2017
20:13:45
c

Maxim
25.09.2017
06:17:08
Я не говорил, что !! производит проверку на null.
Простите, в определенный момент я потерял нить повествования. В таком случае я делаю вывод, что рациональнее всего использовать Kotlin Android Extensions и к объектам классов вью обращатсья без !! или ? Тогда если объект не инициализирован мы получим RuntimeException и сразу же определим место ошибки. Я верно все понял?

You
25.09.2017
06:23:33
А разве в таком случае он может оказаться неинициализированным?

Он же типа датабиндинга

Внешне

Раз - и у тебя переменные с именами айдишников

Google
DarkMentat
25.09.2017
06:27:54
Он падает в рантайме, если не то заимпортил

Но нуллом вроде быть не может

Maxim
25.09.2017
06:30:01
Ну, как минимум при обращении, например, во фрагменте в onCreate, до инициализации вью

Va
25.09.2017
08:33:24
я могу как-то у дата-класса в конструкторе создать переменную, у которой будет private set ?

Igor
25.09.2017
08:41:58
А в обычном классе это можно?

Quantum Harmonizer
25.09.2017
08:49:03
нет, в обычном классе для такого случая свойство объявляется в теле

Va
25.09.2017
10:57:21
для обычного класса я могу без печали сделать кастомный конструктор, а дата-классу нужен обязательно не пустой дефолтный

что ж, жаль

Nikita
25.09.2017
12:43:37
по поводу вчерашнего вопроса с моканьем лямбд в качестве аргументов задал вопрос, гляньте, пожалуйста, может кто сталкивался или есть решения лучше для тестирования

https://ru.stackoverflow.com/questions/722922/%D0%9A%D0%B0%D0%BA-%D0%B7%D0%B0%D0%BC%D0%BE%D0%BA%D0%B0%D1%82%D1%8C-%D0%B4%D0%BB%D1%8F-%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D1%81-%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%B8%D0%BC%D0%B8-%D0%BB%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0%D0%BC%D0%B8

DarkMentat
25.09.2017
12:49:16
это типа должна была быть ссылка на вопрос или ты сам себе ответил, где лучше спрашивать?

Nikita
25.09.2017
12:50:32
лол, ссылку некорректную вставил, поправил

Арсений
25.09.2017
12:56:18
Всем привет, кто что предпочитает, использовать const или оборачивать в companion object? И для каких случаев?

Google
Nikita
25.09.2017
12:57:26
Арсений
25.09.2017
12:57:31
а как она может не принадлежать какому-то классу?

Quantum Harmonizer
25.09.2017
12:57:54
еквивалент when
> Сам метод интерактора вызывается с null параметрами, хотя там точно есть значения workerId и DeviceCondition и они равны именно тем что указаны в методе тестирования. Выглядит как взаимоисключающие параграфы.

а как она может не принадлежать какому-то классу?
const может быть top-level (ни в каком классе, просто в пакете), в companion и в object declaration.

Арсений
25.09.2017
12:59:25
const может быть top-level (ни в каком классе, просто в пакете), в companion и в object declaration.
синтаксис я понимаю, но как с логической точки зрения константа может не относится к какому-то классу/объекту?

разве что писать отдельно функцию без класса и создать там приватную константу, но это единичные случаи

Quantum Harmonizer
25.09.2017
13:00:30
разве что писать отдельно функцию без класса и создать там приватную константу, но это единичные случаи
вот как можео написать top-level функию, так же можно сделать и top-level константу

Quantum Harmonizer
25.09.2017
13:01:35
если мокать func лямбду с помощью argumentCapator то возникает именно такая ситуация
хз вообще, что такое argumentCapator и "func лямбда", дай контекст

Руслан
25.09.2017
13:01:50
@abbath0767 я в чате пытался тебя раскрутить на то чтобы ты написал минимальный пример, на стековерфлоу откоментил, люди высказались и наставили минусов. Сделай https://stackoverflow.com/help/mcve и я уверен, что твоя проблема сразу решится

Александр
25.09.2017
13:02:16
добрый день,кто нибудь встречался с таким на студии 3.0 бета 6

Александр
25.09.2017
13:03:07
студия 3.0 бета 6 не видит Котлин,может кто нибудь что нибудь посоветовать?

Руслан
25.09.2017
13:03:14
Minimal, Complete, and Verifiable

Nikita
25.09.2017
13:06:32
class A(val b : B ) { var c: String = "" fun a(value: Int) { b.doSomething(value, { c = it + " result good" }, { c = it + " result bad" }) } } class B { fun doSomething( value: Int, good: (String) -> Unit, bad: (String) -> Unit) { if (value != 0) { good.invoke(value.toString()) } else { bad.invoke("value must be not zero!") } } } Я постарался максимально просто. Тут указан, как мне показалось, минимум нужной информации. Может что то еще стоит добавить для того что бы понятна была суть проблемы? Я естественно готов идти на встречу, если пойму, что именно не так то)

Nikita
25.09.2017
13:07:57
что здесь работает не так, как надо?
тут все работает замечательно. Как оттестировать метод a класса A?

Quantum Harmonizer
25.09.2017
13:09:36
Google
Nikita
25.09.2017
13:10:00
класс B замоканный

и этим ты тестируешь класс B в т.ч.. Нужно именно юнит тест для метода а класса А, где зависимость от класса B естественно замокана.

Руслан
25.09.2017
13:22:18


Вот тебе юнит тест A

Nikita
25.09.2017
13:26:51
разве тут не проверяется все таки b?

Руслан
25.09.2017
13:27:05
у нас тест на A

что в теле метода A просходит? ничего! ну почти, делегируется вызов ну вот мы и проверили что он делегировался

вообще в лямбдах менять состояние такая себе идея, т.к. такой код тяжело тестировать. лучше бы возвращал объект из метода doSomething

Nikita
25.09.2017
13:28:20
в методе а мы в зависимости от вызванной лямбды в методе b присваиваем значение с

Руслан
25.09.2017
13:28:45
ну вот, это плохо

верни объект и поменяй значение c

Nikita
25.09.2017
13:28:58
вот я прихожу к мнению что в моем кейсе - это плохо и нужно менять структуру)

верни объект и поменяй значение c
все бы было ничего, но там асинхронный метод, до перехода на котлин и последующего рефакторинга место имело быть обыкновенный коллбек интерфейс

Lev
25.09.2017
13:31:13
Есть какая то хитрость в подключении котлин либы к котлин js?

Руслан
25.09.2017
13:31:16
ну а метод b как раз таки вот так и тестируется



не говоря уже о корутинах

Nikita
25.09.2017
13:32:18
метод b проблем нет тестироватЬ, я не спорю.

не говоря уже о корутинах
не хочется их вести на бой, но с другой стороны попробовать конечно не же стоит

Google
Nikita
25.09.2017
13:33:47
ну верни future, и в теле метода в then меняй c
да, подумаю над изменением структуры, на что то более тестируемое, как минимум, благодарю

Руслан
25.09.2017
13:35:12
в джаве кстати напрямую нельзя менять состояние из лямбды, так что c не поменял бы. Зато менять c.serProp() никто не запрещает.

Просто подумал сначала что в джаве бы так и не написал, но потом понял что все возможно

Maxim
26.09.2017
07:55:14


Boris
26.09.2017
07:55:44
Перешли на другую нумерацию версий

Это типа 1.1.5-0

Чтобы в нпм с такой версий можно было попасть

Maxim
26.09.2017
07:56:55
Ок, спасибо

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