@kotlin_lang

Страница 749 из 982
1337
11.07.2018
14:05:59
щас бы дата классы магическими называть

Google
1337
11.07.2018
14:06:07
дженерики тоже наверное магические

Kirill
11.07.2018
14:06:38
дженерики тоже наверное магические
А уж насколько магические корутины...

Andrey
11.07.2018
14:13:41
В месте его создания уже имеются нужные параметрыи вычислено все необходимое
Вот такой вариант чем плох? data class Query(val ids: List<Int>, val namePattern: String, val since: LocalDateTime) val EMPTY_QUERY = Query(listOf(), "", LocalDateTime.MIN) class ServiceTest { @Test fun someTest() { val query = EMPTY_QUERY.copy(ids = listOf(1)) } @Test fun otherTest() { val query = EMPTY_QUERY.copy(namePattern = "foo") } @Test fun oneMoreTest() { val query = EMPTY_QUERY.copy(since = LocalDateTime.of(2018, Month.APRIL, 25, 15, 36)) } }

Фактически EMPTY_QUERY и есть ваши билдер для запросов.

Если Query расширяем, то надо только его инициализацию поправить. Все тесты останутся без изменений.

Igor
11.07.2018
15:02:07
Так они же не помогут мне избавиться от конструирования value-классов
Попробовал junit-quckcheck, вот такое работает и генерит рандомные поля для data-классах. @RunWith(JUnitQuickcheck::class) class Test { @Property fun test(@From(Ctor::class) first: Foo, @From(Ctor::class) second: Foo) = assertEquals(first.a.length + second.a.length, (first.a + second.a).length) data class Foo(val a: String, val b: Int) } К сожалению для вложенных, data классов не заработало, но думаю можно допилить, все же open-source ? http://pholser.github.io/junit-quickcheck

Sergey
11.07.2018
15:13:03
кто что поверх jdbc юзает?

Badya
11.07.2018
15:20:33
Sergey
11.07.2018
15:25:44
spring-jdbc
потому что спринг?

Kirill
11.07.2018
16:25:08
Запросы неизменяемые, но никто не отменял магического copy
тогда ещё и линзы нужны если оно прям всё не мутабельное

Badya
11.07.2018
16:50:07
потому что спринг?
Потому что все удобно)

Eugeny
11.07.2018
16:51:39
Template же удобен. А так хибер с no arg плагином и jooq наше все. Лично мне exposed как-то не зашел

Sergey
11.07.2018
16:53:20
http://jdbi.org/ не?

Google
Eugeny
11.07.2018
17:11:01
Jooq не очень если у тебя в проекте Oracle
Даладна. Как раз с ораклом жука и юзал, ораклисты как раз за жук и топили. А с чем проблемы были? С таймстампом?

Badya
11.07.2018
17:14:40
С лицензией..

Eugeny
11.07.2018
17:16:19
:)

Andrey
11.07.2018
17:22:55
В багтрекер.

Alexander
11.07.2018
17:52:17
А чего сюда все время какие-то левые картинки прилетают. Кто-то на мобилке кнопкой ошибается?

Leonid
11.07.2018
17:54:47
о, Петербург

dimiii
11.07.2018
18:25:01
Jooq не очень если у тебя в проекте Oracle
Люди, у которых есть Оракл, на жук наскребут

Badya
11.07.2018
19:50:33
Dmitriy
11.07.2018
19:59:20
Всем привет. Подскажите, можно как-то такое сделать? У меня есть интерфейс, в котором объявлено что-то типа "val myProperty: Int". Я пишу класс, который типа "class MyClass() : MyInterface". Можно как-то в идее сгенерировать автоматом внутри основного конструктора (так ведь называется то, что внутри круглых скобок?) текст "override val myProperty: Int"? Я в идее нашёл только как сгенерировать свойство внутри самого класса, но там надо к нему как-то поле тогда привязывать. Или я чего-то вообще не то делаю?

Dmitriy
11.07.2018
20:03:23
Кажется, по alt+enter есть несколько вариантов, в т. ч. Implement as primary constructor property
вот у меня там только implement methods - и он в теле создаёт





Quantum Harmonizer
11.07.2018
21:03:27
Почему JvmName не поддерживается для оператор-функций?

Alexey
12.07.2018
00:34:14


Олег
12.07.2018
07:46:02
Всем привет! Есть ли какие-то style guides с рекомендациями по написанию return@lambda ? В каких случаях return опускается?

Роман
12.07.2018
07:52:50
если метод не сложный то опускается

Sergey
12.07.2018
07:59:40
покажите содержимое Main.kt. В каком он пакете? (что написано в package ... сверху?)

Google
Alexey
12.07.2018
08:02:22


Sergey
12.07.2018
08:05:22
в Main class попробуйте указать ru.livemaster.MainKt

Alexey
12.07.2018
08:05:41
Пробовал

Та же ошибка

Sergey
12.07.2018
08:06:49
в настройках артефакта судя по картинке не хватает module output

нужно справа, из test-task1 перетащить module output в левый список

и после сборки проверить, что MainKt.class есть в джарнике

Alexey
12.07.2018
08:08:20
Понял, спасибо, попробую

Kirill
12.07.2018
08:08:40
Та же ошибка
Двинь main по каталогам в правильный пакет или меняй пакет

Сейчас у тебя файл лежит в корневом пакете, а указан другой

Igor
12.07.2018
08:13:27
Олег
12.07.2018
08:14:30
Во всех, кроме кроме случая нескольких точек выхода из лямбды
а это где-то прописано? в kotlin style guides я не заметил...

Igor
12.07.2018
08:15:36
Это очевидно самим дизайном языка, зачем писать уродские return@xxx, когда можно НЕ писать. А вообще это взято это из scala, можно там поискать причину.

Олег
12.07.2018
08:17:21
Igor
12.07.2018
08:17:57
Это все джава-головного мозга... (боюсь его уже не спасти ?)

Kirill
12.07.2018
08:22:40
Как аргументирует мой тимлид: "collection.map{ return@map it.value}" нагляднее, чем без уродского return
map это отображение, если туда ещё и return пихать получится 2 глагола

Admin
ERROR: S client not available

whalemare
12.07.2018
08:37:13
Плюсую, вот уж где, а в map return точно не нужен, тем более если это однострочник.

OlegKrikun
12.07.2018
08:54:34
обычно если мне надо сделать несколько точек выхода из лямбды, я делаю метод с этими точками выхода и вызываю его из лямбды

а ретурн с @ действительно уродство редкостное

Google
Kirill
12.07.2018
08:56:33
Несколько точек выхода не совместимо с чистым и красивым ФП

Konstantine
12.07.2018
08:56:40
Ох, где ж эта информация была раньше. Я и не знал, что в лямбдах можно делать ретерн.

Kirill
12.07.2018
08:56:51
более того оно и с нормальным кодингом не совместимо

если это конечно не guard выражения в начале метода

OlegKrikun
12.07.2018
09:04:20
Несколько точек выхода не совместимо с чистым и красивым ФП
Жизнь вообще боль, да и проекты мы частт пишем не с нуля

Kirill
12.07.2018
09:05:02
Тем не менее

OlegKrikun
12.07.2018
09:05:09
более того оно и с нормальным кодингом не совместимо
Бред имха, лучше отрубать ретурном, чем иметь вложенные ифы

Kirill
12.07.2018
09:05:34
Konstantine
12.07.2018
09:05:35
Жизнь вообще боль, да и проекты мы частт пишем не с нуля
Не трогай фанатов ФП. Они и покусать могут )

Kirill
12.07.2018
09:05:42
OlegKrikun
12.07.2018
09:06:04
Kirill
12.07.2018
09:06:53
Собсна во всех умных книжках (Фаулер, Мартин, Макконел) рекомендуют делать именно так

А это таки адепты ООП, а не ФП

OlegKrikun
12.07.2018
09:09:06
Собсна во всех умных книжках (Фаулер, Мартин, Макконел) рекомендуют делать именно так
Ну книжки уже давно эти написанны и с тех пор много поменялось. Имхо этт уже давно устарело "одна точка входа, одна выхода" мыж не инфузории в конце концов

Kirill
12.07.2018
09:17:14
ООП то ты юзаешь

и ФП

а это добро ещё старше

И "одна точка входа, одна точка выхода" сильно упрощает чтение кода

Google
Konstantine
12.07.2018
09:21:18
Собсна во всех умных книжках (Фаулер, Мартин, Макконел) рекомендуют делать именно так
Теоретики из них хорошие, никто не спорит. Да только в реальном мире не всегда все идеально по учебнику идёт.

Nick Senchurin
12.07.2018
09:23:28
return вначале метода имхо нехорошо

Andrey
12.07.2018
09:23:38
Ну книжки уже давно эти написанны и с тех пор много поменялось. Имхо этт уже давно устарело "одна точка входа, одна выхода" мыж не инфузории в конце концов
Чёрный ящик с одним входом, одним выходом и без побочных эффектов проще всего тестировать. Поэтому и есть такая рекомендация. Не совсем понимаю, что в этом плане поменялось в логике, что она устарела.

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