
Lev
12.10.2018
08:16:46
... а чего они сделают?)
Из этой сиутации помоему никак не выйти. Лямбда после скобок == аргумент.
Разве что предупреждение добавлять, мол тут у вас "лямбда", а аргумента то нет. Weak warning. А потом Supressить его?)

Google

Lev
12.10.2018
08:23:35
От боевого кода вот так получается:
long start$iv$iv = System.currentTimeMillis();
Object result$iv$iv = $receiver$iv.invoke();
long it = System.currentTimeMillis() - start$iv$iv;
this.log.debug("visitor took: " + it);
Ну собственно, действительно, нет особого смысла объект городить

Mikhail
12.10.2018
08:26:57
$receiver$iv.invoke() а вот это что?
переменная с объектом нашей лямбды и вызов invoke() у нее

Alexander
12.10.2018
08:37:35
Из этой сиутации помоему никак не выйти. Лямбда после скобок == аргумент.
Ну, вообще не совсем. Изначально вроде для всего предполагалось, что перенос строки вполне себе явно даёт понять, что текущее выражение/утверждение закончено, кроме случаев когда до переноса явно видно, что на следующей строке должен быть контент. Поэтому
1+
2+
3
Это 6, а
1
+2
+3
это три числа.
Может конечно решили, что со скобками не всё так просто, но это было бы странно.

Mikhail
12.10.2018
08:39:36
зато скобки на другую строку, как в C#, переносить можно

Lev
12.10.2018
08:41:18
Ну да, лямбда там лишняя. Так что оставлю как было

Alexey
12.10.2018
08:56:46
что значит "кастомные"?
Это когда ты можешь сам написать как и во что интерполировать строку:
https://docs.scala-lang.org/overviews/core/string-interpolation.html
В скалке это по сути сахар, который пребразуется в вызов функции класса, в этой статье - это Advanced usage
Благодаря этому можно писать различные dsl'и поверх интерполяции, например шлёпать sql запросы https://tpolecat.github.io/doobie/docs/05-Parameterized.html
А в котлине это увы прибито гвоздями к языку

Lev
12.10.2018
09:04:47
Про лямбду-аргумент https://youtrack.jetbrains.net/issue/KT-27548

Mikhail
12.10.2018
09:13:38
или нет

Google

Mikhail
12.10.2018
09:14:47
нет, нельзя
а смысл, на самом деле, так делать?
это же просто кастомный toString, или я что-то не понимаю?
@eld0727

Nick
12.10.2018
09:15:41

Bogdan
12.10.2018
09:23:14
Да

Alexander
12.10.2018
09:23:37
Если у тебя только get есть на деле, то да.
val instance by lazy { RetrofitUtils() }

Bogdan
12.10.2018
09:26:02
И так лучше не писать есть специальный модификатор, который дает отложеную иницилизацию (компилятор перекладывает это на твои плечи)

Nick
12.10.2018
09:26:32

Alexander
12.10.2018
09:30:18

Bogdan
12.10.2018
09:30:40

Nick
12.10.2018
09:30:56
Да
Ну это я понял уже, да. Спасибо


Lev
12.10.2018
09:31:22
А у меня вот еще вопрос
Тут одну задачку надо решать полным перебором (поиск оптимального пути в динамическом графе (с внутренними ограничениями), никакие известные мне алгоритмы не подошли, математики сказали забить и решать в лоб).
Есть достаточно большой набор вариантов variants (несколько тысяч).
Каждый из них надо посчитать (Variant) -> Double.
А время расчета полного варианта полсекунды. Я там немного покешировал, и оно считает все варианты за секунд 13. Но все равно как то... не круто.
Но вот что еще можно сделать: это посередине расчета сравнить промежуточный результат с наилучшим (наименьшим Double). Если промежуточный уже больше наилучшего - дальше можно не считать.
А ядер то много на серваке.
https://pl.kotl.in/HJS9KyR5Q
И с лучшим результатом надо работать потокобезопасно. Я использовал потокобезопасноть, но вот именно... в таком виде нет %)
Я ведь правильно понимаю что для свойства с объектом а не примитивом достаточно так же указать @Volatile? Сам объект (Double) не мутабельный. И я буду менять его целиком.


dimiii
12.10.2018
09:39:24


Lev
12.10.2018
09:42:30

Alexey
12.10.2018
09:47:53
это же просто кастомный toString, или я что-то не понимаю?
Вот именно что нет, в результате интерполяции ты можешь сделать из строки объект любого типа. У нас в проекте например есть такой интерполятор
implicit class SqlStringContext(val sc: StringContext) {
def sql(args: QueryPart*): Query = ???
}
И он позвлоляет сделать, например, вот такую штуку:
sql"select * from foo where bar in (${set(Set(1, 2, 3))})" == Query(
"select * from foo where bar in (?,?,?)",
List(IntParam(1), IntParam(2), IntParam(3))
)


Mikhail
12.10.2018
09:48:19
Вот именно что нет, в результате интерполяции ты можешь сделать из строки объект любого типа. У нас в проекте например есть такой интерполятор
implicit class SqlStringContext(val sc: StringContext) {
def sql(args: QueryPart*): Query = ???
}
И он позвлоляет сделать, например, вот такую штуку:
sql"select * from foo where bar in (${set(Set(1, 2, 3))})" == Query(
"select * from foo where bar in (?,?,?)",
List(IntParam(1), IntParam(2), IntParam(3))
)
выглядит стремно
чем это отличается от обычной интерполяции, скормленной парсеру?

Alexey
12.10.2018
09:49:39

Google

Alexey
12.10.2018
09:49:53
args - это уже не просто строки
Выражение выше примерно вот так запишится:
new SqlStringContext(StringContext("select * from foo where bar in (", ")")).sql(set(Set(1, 2, 3))

Lev
12.10.2018
09:55:46


Vladimir
12.10.2018
09:59:26

Lev
12.10.2018
10:00:17

Alexander
12.10.2018
10:10:40

Alexey
12.10.2018
10:11:38

Alexander
12.10.2018
11:20:34
Плейлист дополнили всеми докладами первого дня:
https://www.youtube.com/playlist?list=PLQ176FUIyIUbVvFMqDc2jhxS-t562uytr

Ivan
12.10.2018
11:48:03
Товарищи, тут же вроде были люди которые секут в чистых функциональщине и всё такое: у меня есть функция которая мапит из файла байты на структуру. Она очевидно принимает java.io.File, т.е. по идее это не чистая функция, правильно? Вопрос такой: как подобная задача решается через фп? Я так понимаю вместо файла должна быть какая-то монада, но как это выглядит?

Alexey
12.10.2018
11:50:01

Alexandr
12.10.2018
11:50:15

Alexey
12.10.2018
11:50:23
И передавать потом этот результат в функцию

Ivan
12.10.2018
11:51:03

Alexandr
12.10.2018
11:51:07

Mikhail
12.10.2018
11:51:41

Ivan
12.10.2018
11:51:42

dimiii
12.10.2018
11:52:08

Alexey
12.10.2018
11:52:09

dimiii
12.10.2018
11:52:27
вот точнее место https://arrow-kt.io/docs/effects/io/#effect-comprehensions

Mikhail
12.10.2018
11:52:35

Google

Igor
12.10.2018
11:53:13
Бурито из соломы))

Mikhail
12.10.2018
11:53:14

Alexey
12.10.2018
11:54:04

Mikhail
12.10.2018
11:57:26

Admin
ERROR: S client not available

Alexandr
12.10.2018
11:58:13
малоли
может он их мапит и в базу

Ivan
12.10.2018
12:03:52

Sergey
12.10.2018
12:26:37
https://github.com/JetBrains/kotlin-native/releases/tag/v1.0 внезапно

Alexandr
12.10.2018
12:28:07
о_О, скоро увидим 1.3 и корутины 1.0

Жабра
12.10.2018
12:29:03

Sergey
12.10.2018
12:29:23
ну как минимум паровоз релиза начался
если опять не скажут что это автоматическая сборка пошла))

Quantum Harmonizer
12.10.2018
12:29:51

Anna
12.10.2018
12:30:21
Ну кто же в пятницу вечером-то релизит

Alexandr
12.10.2018
12:33:02
https://github.com/JetBrains/kotlin/releases/tag/build-1.3.0-rc-162
core еще не поплыл

Жабра
12.10.2018
12:34:48

OlegKrikun
12.10.2018
12:37:49
https://twitter.com/kotlinconf/status/1050722677185499136

Google

Beholder
12.10.2018
13:26:00
оффтопик: кто-нибудь пользуется новым http-клиентом в Идее? у меня там неправильно отображается кодировка в ответном xml

Алексей
12.10.2018
15:29:33
Мне нужна помозь в таком вопросе:
Есть два списка list1: List<Int> и list2: List<Int>. Мне нужно их так сравнить, чтобы возвращалось true, если списки содержат хотя бы один схожий элемент. Например (1,3,4) и (1,5,9) вернет true, а (1,3,4) и (2,7,8) вернет false. В котлине как это сделать наиболее оптимально?

Ivan
12.10.2018
15:34:10
Мне нужна помозь в таком вопросе:
Есть два списка list1: List<Int> и list2: List<Int>. Мне нужно их так сравнить, чтобы возвращалось true, если списки содержат хотя бы один схожий элемент. Например (1,3,4) и (1,5,9) вернет true, а (1,3,4) и (2,7,8) вернет false. В котлине как это сделать наиболее оптимально?
intersect

Alexander
12.10.2018
15:34:24
Мне нужна помозь в таком вопросе:
Есть два списка list1: List<Int> и list2: List<Int>. Мне нужно их так сравнить, чтобы возвращалось true, если списки содержат хотя бы один схожий элемент. Например (1,3,4) и (1,5,9) вернет true, а (1,3,4) и (2,7,8) вернет false. В котлине как это сделать наиболее оптимально?
(listOf(1, 2, 3) intersect listOf(3, 4, 5)).isNotEmpty()
Предположу, что так.

Алексей
12.10.2018
15:36:24

Quantum Harmonizer
12.10.2018
15:40:19
Есть у меня, значит, набор полей известных типов ?. И есть рандомная структура (скажем, JSON) без типов ?.
Как замаппить ? на ??
а) ? парсит данные, определяет их типы и суёт в визитор. ? реализует визитор и просит типы привестись (тогды типы начинают уметь приводиться друг в друга, это ж песец сколько кода)
б) ? сразу говорит: дай-ка мне такие типы. ? бежит парсить непосредственно в эти типы, эффективно и немногословно, но не особо понятно, как это сделать, особенно не выделяя промежуточные объекты — ведь уже не визитор.
в) целиком повторить API типичного стримингового парсера?..


Vladimir
12.10.2018
15:41:27
Мне нужна помозь в таком вопросе:
Есть два списка list1: List<Int> и list2: List<Int>. Мне нужно их так сравнить, чтобы возвращалось true, если списки содержат хотя бы один схожий элемент. Например (1,3,4) и (1,5,9) вернет true, а (1,3,4) и (2,7,8) вернет false. В котлине как это сделать наиболее оптимально?
Если списки большие, то наиболее оптимально - это второй список превратить в Set (.toSet()) и делать так: list1.any { it in set2 }

Nikita
12.10.2018
15:54:58


Alexander
12.10.2018
15:55:35
Есть у меня, значит, набор полей известных типов ?. И есть рандомная структура (скажем, JSON) без типов ?.
Как замаппить ? на ??
а) ? парсит данные, определяет их типы и суёт в визитор. ? реализует визитор и просит типы привестись (тогды типы начинают уметь приводиться друг в друга, это ж песец сколько кода)
б) ? сразу говорит: дай-ка мне такие типы. ? бежит парсить непосредственно в эти типы, эффективно и немногословно, но не особо понятно, как это сделать, особенно не выделяя промежуточные объекты — ведь уже не визитор.
в) целиком повторить API типичного стримингового парсера?..
Я не совсем понимаю проблему, но можно генерировать объект ленивым образом.

Quantum Harmonizer
12.10.2018
16:03:08

Mikhail
12.10.2018
16:03:59

Alexander
12.10.2018
16:04:54

dimiii
12.10.2018
16:05:01

Geronimo
12.10.2018
16:05:13
Кто-нибудь работал с переводом английских, русских слов в транскрипцию? Можете подсказать есть ли хорошие api для этого?

Quantum Harmonizer
12.10.2018
16:05:22