@kotlin_lang

Страница 580 из 982
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
Там в котлин макросы случаем не собираются тащить?
Так это же зло, вон 5 лет держали “в экспереметальном виде“ в скале и в итоге выпилили. Макросы это ошибка, в котлине будут плагины компилятора прям с поддержкой IDE

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, то можно было избежать использования рантайм рефлексии и кучи бойлерплейта на компайл тайме

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

Вроде и так их не имею.
Чем json формируешь?

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
Мне как то колега говорил, что в андроиде какая то штука генерит код толи для базы, толи для json на компайл тайме, не слышали про такое?
"Из коробки" Android SDK генерит код, ссылающийся на ресурсы приложения. А всё остальное можно своими/чужими annotation processor'ами делать. Room, Dagger и вот это всё.

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
Alexey
13.03.2018
08:08:13
== в котлине и есть иквелс
equals и Arrays.equals - разные вещи

Vladimir
13.03.2018
08:10:40
Pavel Shackih
13.03.2018
08:26:40
equals и hashCode, которые работают за неизвестно какое время (т.к. кто его знает, какого размера массив будет) - это такое себе
это понятно, поэтому и спрашиваю почему при генерации хеш кода всё такие используется Arrays.hashCode, работа которой также зависит от размера массива, а при equals сразу по ссылке. было бы более очевидно если везде принцип был одинаковый

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
Oh, I'm late
Sit down

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
у меня есть функция определенная в package
Нельзя переопределить, она статическая.

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, тоже что-то не то

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) }

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
Я, кстати, после года непрерывного котлина немного пишу на Java и очень плотно подсел на assignment-as-expression :)
Что реально так часто юзаешь? (это все равно не компенсирует что все остально не expression)

Quantum Harmonizer
13.03.2018
21:05:42
Google
Andrew
13.03.2018
21:45:10
Что реально так часто юзаешь? (это все равно не компенсирует что все остально не expression)
Ничё, скоро завезут switchexpr, а за ним и всё остальное помчится. Главное, чтобы не завезли forexpr в духе пайтоновских list comprehensions :)

padmitriy
14.03.2018
07:23:50
myInput.copyTo(myOutput, 1024)
Да, так и сделал. Все гениальное просто

Ruslan
14.03.2018
08:48:18


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

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
объект внутри класса

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