Comments 29
Ох, поддержка JADE. А как же ее включить? EAP обновил, но подсветка не включилась, и в списке File Types jade не появился.
В плагинах тож нима :(
А какая у Вас версия? Нужна 121.150 или позднее. Если она такая, можно попробовать сделать uninstall и install еще раз.
Версия 121.150, я просто нажал кнопку «обновить» когда она вышла )

Удалять пробовал (ну как удалять, на маке ето я перетащил в корзину :) )
Установил свежескаченную версию, таже фигня.
А когда ожидается обновление котлина до M3? А то из-за отсутствия нормальной поддержки энумов не могу продолжить комфортно им пользоваться.
В nightly builds энумы уже пофикшены. А M3 выйдет очень скоро: где-то на следующей неделе.
Да, я видел, поскольку голосовал за багфикс, но при сборке мавеном ошибка вылезает. Очень жду.
Кстати, чтоб два раза не вставать: при конвертации java кода в kotlin неправильно конвертится выражение типа Some.class. А еще классам нельзя сгенерить конструктор с нулем аргументов даже в том случае если все аргументы помечены как опциональные. Из-за этого неьлзя сделать нормальным способом класс, совместимый, например, с JPA.
Мавен-билд уже пофикшен.

Вообще, баги лучше репортить в трекер.

Про конструктор я не совсем понял: какой в точности юзкейс имеется в виду?
Я обычно так и делаю, но тут что-то руки не дошли.

имеется ввиду

Entity class A(val b:B?=null,val c:C?=null, val d:D?=null){}

Казалось бы — идеальный Pojo, ан нет, для JPA нужен конструктор без аргументов. А мне, как девелоперу, нужен еще и конструктор с тремя (в данном случае) аргументами. И вот мой-то запрос данным классом удовлетворяется, а JPA с таким классом работать не может.
Приходится задавать b,c и d полями класса, а потом инициализировать их сеттерами (особенно если из джавы).
Да, юзкейс понятный. Мы, в принципе, могли бы сделать так: генерировать версию, где все параметры подставлены, вдобавок к тому, что генерируется сейчас.

Были экстремистские идеи сделать все варианты, но мне это кажется несколько через чур. :)
Мне как раз казалось идеальным вариантом полный перебор вариантов, но тут непонятно, что делать в случае если параметров, например, 20. Скомпилированный класс рискует раздуться до нереальных размеров. Но, как мне кажется, как минимум надо генерировать конструктор со всеми упомянутыми параметрами и без опциональных параметров. Если идти дальше, то при количестве аргументов конструктора (опциональных) <=4 (или другой цифры, которая кажется разумной) делать полный перебор вариантов или хотя бы каскадный вызов, a la A(b){A(b,null,null)} A(b,c){A()b,c,null}A(b,c,d){/*do smth*/}
Прошу прощения за то, что оно так убого выглядит.

Еще одна проблема конструкторов в котлин — невозможность создать два принципиально разных конструктора. Например, как сделать копирующий конструктор при наличии обычного — непонятно. Или это неправильно по неким идеологическим соображениям?
Делать два разных констурктора не надо. На это есть фабричные методы, синтаксически они выглядят точно так же как и конструктор.
Что-то пропустил эту статью на вики.
Это те, которые записываются как
class C() { 
  class object { 
    fun create() = C() 
  } 
} 

?
На мой взгляд весьма неудобно и непонятно.
Помещать фабричные методы в class object нужно редко. Обычно делают так:

fun A(...): A = A(...) class A(...) { ... }
А как при таком подходе сделать, чтобы можно было вызывать
A(b) и A©, но при этом в декларации класса A не писать двух опциональных параметров (b:B=...,c:C=...)? Я, видимо, не понимаю чего-то важного.
fun A(c: C): A { 
  val a = A()
  a.c = c
  return a
}
fun A(b: B): A {
  val a = A()
  a.b = b
  return a
}
class A() {
  var b: B = ...
  var c: C = ...
}
И правда, не понимаю очевидных вещей. Спасибо большое за разъяснение.
Тогда жду умных конструкторов )
один вопрос по поводу скидок и вообще покупки: покупая одну персональную лицензию нужно указывать os под которую покупаешь?

так уж получилось, что периодически работаю на разных ос (винда, линукс), поэтому интересно обойдусь я одной лицензией или нужно будет по лицензии на каждую ось.
По этому поводу в условиях лицензии написано:
A Personal License allows for use of the software on different operating systems, provided that they are not used at the same time.
Т.е. можно использовать под разными операционками, но не одновременно.
какие-то странные «50%» скидки:

ReSharper Full Edition: $199 — $149
ReSharper C# Edition: $149 — $99
AppCode: $99 — $59

На сайте все правильно написано «Get up to 50% OFF...» — скидки до 50%. А вот вы дезинформируете.
Самое интересное в этих скидках, что цена обновления и покупки новой лицензии практически одинаковы. Что на мой взгляд означает, что в данном случае выгоднее купить, если есть зачем.

Может кто в курсе, можно ли приобретать две персональных лицензии на себя?
Only those users with full accounts are able to leave comments. Log in, please.

Information

Founded
Location
Россия
Website
jetbrains.com
Employees
1,001–5,000 employees
Registered

Habr blog