
Dibro
02.02.2018
10:58:25

Anatoliy
02.02.2018
10:58:48
Если бы reified можно было без проблем сделать для не-inline функций, его бы наверняка сделали. А вы тут как раз это и обсуждаете.
В теории можно было бы, конечно, поступить как в плюсах с шаблонами -- генерить по новому методу на каждый тип, плюс смапить номера строк для дебаг инфо, но я полагаю, что предугадать все возможные вызовы в компайл-тайме для жвм невозможно.
Ещё, конечно, можно в дебаг-билдах на борту таскать с собой компилятор... :D
А кто-то в курсе, этот вопрос вообще прорабатывается? Это будут хоть как-то реализовывать?
А то жизнь без отладки, это жизнь ?

Quantum Harmonizer
02.02.2018
10:59:09

Dibro
02.02.2018
10:59:38
...или писать без ошибок

Google

Igor
02.02.2018
11:00:02
Еще можно println отлаживать ???

Anatoliy
02.02.2018
11:03:55

Vitalii
02.02.2018
11:04:38
Ну да, и весь чужой код всегда покрыт тестами.

Anatoliy
02.02.2018
11:05:18
Все это только в минус котлину.
Хотелось бы все же не опускаться до уровня JavaScript )
Просто не надо дебажить, надо тесты писать.
...или писать без ошибок
Еще можно println отлаживать ???

Александр
02.02.2018
11:13:56

Sergey
02.02.2018
11:43:41

Anatoliy
02.02.2018
12:12:31

Quantum Harmonizer
02.02.2018
12:13:26

Anatoliy
02.02.2018
12:14:55
????
Просто ситуация такая, что половина проекта переведена с джавы на котлин с использованием инлайна который может прерывать основную функцию.
Причем при переводе код был оптимизирован)
Теперь же выясняется, что подебажить его не представляется возможным)
Перепиливать кучу кода из-за логики возвратов что-то совсем не хочется)

Google

Sergey
02.02.2018
12:17:24
вроде как hotspot не умеет инлайнить лямбды, поэтому даже без nonlocal returns и reified дженериков смысл есть...

Quantum Harmonizer
02.02.2018
12:19:26

Anatoliy
02.02.2018
12:20:31
Запилить функцию breakpoint(id: Int)
Правда еще не факт, что заработает, надо пробовать)

Andrew
02.02.2018
12:31:21
Тогда уже id: String, чтобы при расстановке условных бряков номера не вспоминать.
Был у меня один проект (Java, Android), на котором прошлый разработчик в качестве тегов в своём кастомном логгере использовал числа. АдЪ.
А в целом спасибо за идею, сегодня как раз её опробую, вероятно.
В колл-стеке инлайн-функций же ж нету, само собой, да?
https://github.com/JetBrains/kotlin-native/pull/1280 ^_^

Sergey
02.02.2018
13:02:05
интересно, а Telegram X на котлине написан?

Денис
02.02.2018
13:02:16
А исходники часом не открытые?

Sergey
02.02.2018
13:02:22
не могу найти

Quantum Harmonizer
02.02.2018
13:02:42

Roman
02.02.2018
13:02:43

Sergey
02.02.2018
13:02:46
нашел только под ios и старый андроид

Денис
02.02.2018
13:03:04
The source code for Telegram X will be released eventually, no later than the first official public release of the app.
Вроде как на свифте
Но это не точно

Quantum Harmonizer
02.02.2018
13:03:27

Google

Quantum Harmonizer
02.02.2018
13:03:36

Roman
02.02.2018
13:05:10
Когда-то давно были баги на эту тему в дебаггере, но мне казалось что давно уже все закрыты. Я давно проблем с обычными inline функциями не испытывал, кроме того, что F7/F8 не всегда интуитивно себя ведет. Поэтому и спрашиваю.

Quantum Harmonizer
02.02.2018
13:06:39
вот есть, например https://youtrack.jetbrains.com/issue/KT-18669

Roman
02.02.2018
13:08:26
Ага. Понятно. Это что-то adroid-specific (поэтому я не натыкаюсь). Но тоже вроде работа ведется.

Quantum Harmonizer
02.02.2018
13:11:54

Виталий
02.02.2018
13:19:58
есть модификатор доступа по пакету функции в файле ?
protected запрещено использовать в объявлениях "высокого уровня". :(

Quantum Harmonizer
02.02.2018
13:21:47

Виталий
02.02.2018
13:22:15
модуль я так понимаю это всё

Quantum Harmonizer
02.02.2018
13:22:38
Что «всё»?

Виталий
02.02.2018
13:23:39
так, а что такое модуль, если public видит везде ?
думал модуль это основная папка где весь код, рядом можно создать другую папку (модуль)
короч мне нужны функции, на каждый файл 1 функция в одном пакете, ято бы функции вызывать можно было только с этого пакета - это ни как что ли ?
это что же придеться функции именовать как в старые добрые L1,L2,L3 ??? ? если функций гора и в файле с классом они как бэ громоздкость создают - потому просто класс и функции хотелось бы в один пакет

balolam
02.02.2018
13:47:30
На уровне файла private будет работать, на уровне пакета - увы нет(
А в чем проблема то?
У вас спокойно могут быть функции с одинаковыми именами в разных файлах, просто при импорте укажите какую затягиваете и откуда

Quantum Harmonizer
02.02.2018
13:48:35

balolam
02.02.2018
13:49:52
+++, хотя странно если будут на уровне одного пакета с одним именем... выходит что уже изначально что-то пошло не так у вас)

Виталий
02.02.2018
14:01:48

Google

Anatoliy
02.02.2018
14:02:30

Quantum Harmonizer
02.02.2018
14:04:22

Igor
02.02.2018
14:04:48
А как в котлин перевести то, что на java выглядит как
Map<? extends SomeClass, ? extends SomeOtherClass>?

Quantum Harmonizer
02.02.2018
14:05:04

Igor
02.02.2018
14:05:26
это неудобно ((
А зачем вам много функций вне классов еще и похожими сигнатурами?

Anatoliy
02.02.2018
14:06:23

Виталий
02.02.2018
14:06:27
чет запутался - есть класс/файл, в этом же файле определены функции вне класса, при наследовании этог класса функции же не будут дублироваться , правиль - в этом и фишка я полагаю ?

Quantum Harmonizer
02.02.2018
14:06:37

Vitalii
02.02.2018
14:06:42

Quantum Harmonizer
02.02.2018
14:07:07

Anatoliy
02.02.2018
14:07:25

Виталий
02.02.2018
14:07:33

Quantum Harmonizer
02.02.2018
14:07:45

Виталий
02.02.2018
14:08:03
или сразу клаас
и там и там я могу функции вне класса писать

Quantum Harmonizer
02.02.2018
14:08:37

Виталий
02.02.2018
14:08:52
мне про наследование
функции же не пойду размножаться если они объявляне ыне класса но в одном файле с классом

Google

Виталий
02.02.2018
14:09:31
пр наследовании класса
впринцыпе я уверен что функции вне класса не будут дублиорваться, так как они не имеют доступа к функциям в классе
так вот мне что бы в файле/классе не плодить 100500 строк я хочу функции создавать в отдельных файлах в одном пакете с этим классом, и что бы к этим функциям не было дстпа с других пакетов... жаль что так нельзя

Anatoliy
02.02.2018
14:14:54
а на десктопе или сервере — JVM, это разные окружения
Нэ, на эмуле тоже не срабатывают точки останова.
Мало того, они не везде себя одинаково ведут.
В экстеншенах брейкпойнт срабатывает, если был установлен непосредственно в момент выполнения байткода (когда остановились где-то пораньше)
В инлайне вообще не работает(

Quantum Harmonizer
02.02.2018
14:15:14

stas
02.02.2018
14:16:15
Подскажите как быстро проверить является ли строка числом?))) понимаю, что вопросы вроде бы и банальные, но хочется сделать это как можно более лаконично)

Quantum Harmonizer
02.02.2018
14:16:24
На JVM работает, только что проверил.

Виталий
02.02.2018
14:17:35
это я короч типа оптимизация памяти, что бы в наследуемом классе были только параметры, а все необходимые функции классу при наследовании были созданы только один раз.
типа
class AAA{
fun update() {
horizontalMover(this)
verticalMover(this)
tileScale(this)
}
}
и вот эти методы в update которые они вне класса.
короче.... ))))

stas
02.02.2018
14:17:44

Quantum Harmonizer
02.02.2018
14:18:19

Виталий
02.02.2018
14:18:28
я сам в шоке
но я хочу модификатор доступа по пакету для функций ))

Vadim
02.02.2018
14:24:01
В котлине вроде можно было избежать вложенности классов моделей ?
У меня есть дата класс: data class Attach(val session_id: Long, val data: ResponseData)
Могу ли я не делать ResponseData в отдельном файле, а как-то сделать всё в Attach ?
в ResponseData у меня еще будут вложенные объекты... Мне нужно всю цепочку описывать отдельно и плодить куча классов моделей?

Quantum Harmonizer
02.02.2018
14:25:30

Vadim
02.02.2018
14:25:51

Quantum Harmonizer
02.02.2018
14:26:03