
Alex
13.03.2018
06:17:37

Alexey
13.03.2018
06:17:57
Печаль, беда

Kirill
13.03.2018
06:18:08

Alexey
13.03.2018
06:18:46
Инлайн не умеет в generic programming

Google

Alexey
13.03.2018
06:18:57
Или как оно там

Igor
13.03.2018
06:41:03

Quantum Harmonizer
13.03.2018
06:41:49
Где код — это данные, а макрос — обычная функция, которая принимает одни данные и возвращает другие.

Igor
13.03.2018
06:43:09
Ну да, идеально сочетание - динамический-язык с гомоиконичность (и даже там их не советую юзать)

Alexey
13.03.2018
06:43:27
Бурмако пытается новые макросы поверх scalameta пилить. В dotty тоже будут макросы
Для ясности, сейчас очень большой процент либ >> 50% используют макросы, а ты говоришь что их выпилили ?
И вот если бы добавили макросы в java или kotlin, то можно было избежать использования рантайм рефлексии и кучи бойлерплейта на компайл тайме

Quantum Harmonizer
13.03.2018
06:47:56

Igor
13.03.2018
06:48:04

Alexey
13.03.2018
06:48:29
Идея крассная от whitebox макросов, с blackbox всё хорошо

Google

Даниил
13.03.2018
06:49:07
про отличие whitebox макросов от blackbox

Alexey
13.03.2018
07:14:32
про отличие whitebox макросов от blackbox
whitebox работает на этапе тайпера и поэтому в компилятор еще учитывает тип выражения, которое сгенерировал макрос. На этом построены все фишки с гетерогенными листами в shapeless
А blackbox уже происходит после тайпера, так что тип выражения уже заранее известен
И поэтому идея на них не краснит
Мне как то колега говорил, что в андроиде какая то штука генерит код толи для базы, толи для json на компайл тайме, не слышали про такое?

Алексей
13.03.2018
07:17:18
Annotation Processor называется :)

Vladimir
13.03.2018
07:20:11

?
13.03.2018
07:21:02

Quantum Harmonizer
13.03.2018
07:21:44
Чем json формируешь?
Сколько я ни стараюсь избегать всякого говна, JSON всегда меня находит.
Теперь есть kotlinx.serialization — плагин для компилятора, поддерживает JSON и Protobuf.

Igor
13.03.2018
07:22:13
А sealed классы он так и не поддерживает ? (по крайней мере json сериализация)

Quantum Harmonizer
13.03.2018
07:22:37
LoganSquare генерит код, например. Но там очень плохой API.

Alexey
13.03.2018
07:23:33

Igor
13.03.2018
07:25:35
Ну так плагины - наше все, хочешь расширять язык и добавлять кодо-генерацияю
и при этом поддержку в IDEA и инкреминтальную компиляцию - ставь плагин.

Alexey
13.03.2018
07:27:29
Ну офигеть теперь, я также могу про whitebox макросы сказать, плагины наше всё пишешь кодогенерацию, а потом еще плагин к идеи, а потом еще плагин к scalaide

Igor
13.03.2018
07:29:07
Благо у нас только одна IDE ?

Alexey
13.03.2018
07:29:57
Ну это же дичь, не?

Даниил
13.03.2018
07:30:35
дичь абсолютная

Pavel Shackih
13.03.2018
08:00:44
привет. а почему в data классах при использовании массивов в генерации equals не используется Arrays.equals, а сравнение по ссылке. хотя для хешкода есть Arrays.hashCode это же в принципе ожидаемо?

Google

Bogdan
13.03.2018
08:06:30

Alexey
13.03.2018
08:08:13

Vladimir
13.03.2018
08:10:40

Pavel Shackih
13.03.2018
08:26:40

Alexey
13.03.2018
08:30:06

Vladimir
13.03.2018
08:36:15

Anton
13.03.2018
08:40:58
https://insights.stackoverflow.com/survey/2018/

Sergey
13.03.2018
08:54:55

Dmitry
13.03.2018
11:16:41
Stack overflow survey results is available. Check most loved languages section
Oh, I'm late

Руслан
13.03.2018
11:17:55

Andrey
13.03.2018
11:24:20
а можно ли глобальную функцию переопределить в одном файле?

Alexey
13.03.2018
11:25:29
глобальную функцию - переопределить Оо
Что ты понимаешь под глобальной функцией?

Andrey
13.03.2018
11:26:46
у меня есть функция определенная в package
я хочу ее вызов временно отключить в одном файле

Quantum Harmonizer
13.03.2018
11:27:10

Andrey
13.03.2018
11:27:20
но не хочу писать if или комментить все вызовы
как правильно поступить?

Google

Andrey
13.03.2018
11:32:36
о, нашел как... :) не буду писать, а то вдруг кто повторит :)

Anton
13.03.2018
11:33:49
да уж лучше не надо

Admin
ERROR: S client not available

padmitriy
13.03.2018
20:12:16
есть такой простой метод в SQLite
private void copyDataBase() throws IOException {
InputStream myInput = myContext.getAssets().open(DATABASE_NAME);
String outFileName = DATABASE_PATH + DATABASE_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myOutput.flush();
myOutput.close();
myInput.close();
}
как его правильно переписать? с While не понимаю до конца, там вроде выражения не допустимы. Меняем на for, тоже что-то не то

Andrew
13.03.2018
20:16:09

Quantum Harmonizer
13.03.2018
20:16:46

padmitriy
13.03.2018
20:17:07

Dibro
13.03.2018
20:17:21
вроде есть какой-то экстеншн, именно для этой задачи

Andrew
13.03.2018
20:17:28
Ну или совсем для ленивых: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/java.io.-input-stream/copy-to.html
(на самом деле именно это правильный ответ, как решить задачу ?)

Quantum Harmonizer
13.03.2018
20:18:13
не в этот раз)
var length = in.read(buffer)
while (length > 0) {
...
length = in.read(buffer)
}

padmitriy
13.03.2018
20:18:24

Quantum Harmonizer
13.03.2018
20:18:57
Я, кстати, после года непрерывного котлина немного пишу на Java и очень плотно подсел на assignment-as-expression :)

padmitriy
13.03.2018
20:19:44
спасиб, попробую)

Quantum Harmonizer
13.03.2018
20:20:39

Igor
13.03.2018
21:04:54

Quantum Harmonizer
13.03.2018
21:05:42

Igor
13.03.2018
21:09:42

Google

Andrew
13.03.2018
21:45:10

Igor
13.03.2018
21:54:14

Andrew
13.03.2018
21:55:44

Dmitry
14.03.2018
07:20:07

padmitriy
14.03.2018
07:23:50

Ruslan
14.03.2018
08:48:18

Sergey
14.03.2018
08:50:00
как минимум оно не скопилируется с таким же именем

Ruslan
14.03.2018
08:53:52

Quantum Harmonizer
14.03.2018
08:54:24
но по-разному

Sergey
14.03.2018
08:54:54

Badya
14.03.2018
08:55:27
Посмотри байт-код в идее ж)

Ruslan
14.03.2018
08:55:38
объект внутри класса