
Mikhail
11.07.2018
14:05:03
Вот прям все все
И они просто помещаются в конструктор

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

Kirill
11.07.2018
16:25:08

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

Badya
11.07.2018
17:08:42

Eugeny
11.07.2018
17:11:01

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

Eugeny
11.07.2018
17:16:19
:)

Mikhail
11.07.2018
17:21:16

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

Badya
11.07.2018
19:50:33

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

Quantum Harmonizer
11.07.2018
20:02:20

Dmitriy
11.07.2018
20:03:23

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

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

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

Dmitry
12.07.2018
09:11:21

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