Комментарии 6
Главное при разработке DSL помнить меру. А то некоторые понапишут своих языков поверх Скалы, и новому разработчику вообще не ясно, что тут происходит, а почитать особо и не где про это (за исключением исходников, конечно).
Статья хорошая, легко читается, но билдер не рабочий:
Тут объявляются дефолтные значения для имутабельных свойств
data class Person(var name: String? = null,
var age: Int? = null,
var address: Address? = null)
Тут создается объект (inline
добавить бы) без передачи значений — все свойства == null
data class Person(var name: String? = null,
var age: Int? = null,
var address: Address? = null)
А тут compile error так как автор сетит неизменяемые свойства
val person = person {
name = "John" // ERR: val cannot be reassigned
age = 25
}
Мутабельные свойства должны быть (но это не по Котлински), или передавать значения в качестве параметров функции, ну еще может как-то можно извратиться с методом copy()
Не вижу большой разницы по сравнению с таким кодом:
var person = Person(
name = "John",
age = 25,
address = Address(
street = "Main Street",
number = 42,
city = "London",
)
)
Просто вызываем конструктор с именованными аргументами. Плюс, можно объявить поля константами (val), и избежать задания дефолтного null для полей
Осмелюсь предложить парочку предложений к следующим статьям цикла:
1) Явно указывать, в чём проявляется доменная специфичность предлагаемого языка.
2) Явно указывать преимущества предлагаемого языка по сравнению с традиционным подходом (напрямую программировать нп Kotlin).
3) Дать информацию о каком домене вы ведете речь. Судя по началу это могут быть кадровые вопросы, зарплата, клиеты, студенты и т.д. Это разные домены и у них разные специфики.
1) Явно указывать, в чём проявляется доменная специфичность предлагаемого языка.
2) Явно указывать преимущества предлагаемого языка по сравнению с традиционным подходом (напрямую программировать нп Kotlin).
3) Дать информацию о каком домене вы ведете речь. Судя по началу это могут быть кадровые вопросы, зарплата, клиеты, студенты и т.д. Это разные домены и у них разные специфики.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Пишем DSL в Koltin