Вы же, наверное, имели в виду генерацию Java-файлов annotation processor'ом из аннотаций в коде на Kotlin? Обычные исходники на Kotlin компилируются напрямую в байт-код, без трансляции в Java.
<...> если мы используем переданный в конструктор параметр, то он будет присвоен полю сразу, минуя переопределенный setter
Тут можно сделать что-нибудь в духе
class User(nameParam: String) {
var name: String = ""
set(value) { field = value.toUpperCase() }
init { name = nameParam } // вызовется сеттер
}
Лямбда, вложенная в лямбду
Про такое, кстати, даже в документации (coding conventions) сказано, что если лямбды вложены, то у всех лучше явно писать все параметры вместо использования it.
Форматтеру IDEA вполне можно запретить форматировать участок кода, но по умолчанию эта фича выключена. Например, здесь это позволило избежать лишнего большого отступа, который бы добавился из-за того, что это аргумент конструктора. :)
Согласен, во время написания поста тоже думал, что для цепочек вызовов это должно быть осуществимо примерно так, как написано у вас (спасибо что показали, как именно!). В таком случае остаётся только такой недостаток, как необходимость воевать с форматтером, чтобы он не выровнял все вызовы функций.
Мне кажется, как минимум, потому что в адресах попадаются правильные скобочные последовательности, а они уже не относятся к регулярным языкам. Но это если ограничения на длину нет.
Есть такой вопрос: планируете что-нибудь для метапрограммирования, более мощное, чем annotation processing javac'а? Например, что-нибудь из разряда Groovy AST.
Я, вероятно, что-то упустил, но для достижения latency уведомлений в 30-60 секунд вам пришлось и «будильник» с таким же периодом запускать? Если да, то подозреваю, что устройства в сон уходить почти не будут, потому что это, ЕМНИП, не мгновенный процесс, сон многоуровневый и наступает постепенно.
Рассказывайте, пожалуйста, тема очень интересная. Например, хотелось бы узнать, что такое происходит с клетками, что иммунитет с ними хуже справляется.
Я бы возразил, что сайд-проекты бывают разные и что разработчик, занятый в кровавом энтерпрайзе, может по выходным заниматься инди-геймдевом и не только писать код, но ещё и рисовать и даже музыку сочинять для этого, но тут, наверное, спорить не о чем, я вашу мысль понял.
Тогда было бы здорово узнать чужие мнения и опыт по вопросу, работает ли это.
На мой взгляд, то же самое, что запрещать жениться или детей заводить — мысли не о том будут — а то и вообще из офиса не выпускать.
Если не утрировать, то мне казалось, что смена деятельности, наоборот, повышает продуктивность, и это даже без учёта всех плюсов, описанных в статье.
И второй вопрос, по важности не уступающий вопросу «как?» — зачем? :)
Нет, серьёзно интересно, какие цели может преследовать работодатель, запрещая сторонние проекты?
С проверяемыми исключениями далеко не всё однозначно, и в Java такой подход был скорее экспериментальным. В документации по поводу отсутствия проверяемых исключений в Kotlin ссылаются cюда, сюда и сюда.
Придётся, но, как в ветке ниже верно отметили, эта работа сведётся к одной строчке кода прямо перед объявлением метода. Для класса, помеченного аннотацией data, компилятор сам сгенерирует equals, hashCode, copy и component1..N. Ну, ещё есть Pair и Triple в стандартной библиотеке, если семантику полей не жалко. :)
Интересно, насколько лучше или хуже бы себя показало применение visibility graph'а для поиска пути…
Пробовали? Или A* по сетке — первое решение, proof of concept?
Про скобочки, пожалуй, правда ваша, в тех разумных пределах, пока синтаксический шум не мешает читать код.
А насчёт возврата нескольких значений — Kotlin так умеет:
val (x, y, z) = points3d[0]
или даже
for ((k, v) in hashMap) { /* ... */ }
Настоящих tuples, правда, нет (мотивация — не нужны), и примеры выше работают за счёт реализации методов component1..N.
Вы же, наверное, имели в виду генерацию Java-файлов annotation processor'ом из аннотаций в коде на Kotlin? Обычные исходники на Kotlin компилируются напрямую в байт-код, без трансляции в Java.
Тут можно сделать что-нибудь в духе
Про такое, кстати, даже в документации (coding conventions) сказано, что если лямбды вложены, то у всех лучше явно писать все параметры вместо использования
it.values()используютenumConstants, но проvalueOf()не написано.кровавомэнтерпрайзе, может по выходным заниматься инди-геймдевом и не только писать код, но ещё и рисовать и даже музыку сочинять для этого, но тут, наверное, спорить не о чем, я вашу мысль понял.На мой взгляд, то же самое, что запрещать жениться или детей заводить — мысли не о том будут — а то и вообще из офиса не выпускать.
Если не утрировать, то мне казалось, что смена деятельности, наоборот, повышает продуктивность, и это даже без учёта всех плюсов, описанных в статье.
Нет, серьёзно интересно, какие цели может преследовать работодатель, запрещая сторонние проекты?
data, компилятор сам сгенерируетequals,hashCode,copyиcomponent1..N. Ну, ещё естьPairиTripleв стандартной библиотеке, если семантику полей не жалко. :)Пробовали? Или A* по сетке — первое решение, proof of concept?
А насчёт возврата нескольких значений — Kotlin так умеет: или даже Настоящих tuples, правда, нет (мотивация — не нужны), и примеры выше работают за счёт реализации методов
component1..N.