можно было присваивать фукнции выражение без кучерявых собок? (либо заставлять переменную обновляться в соответствии с приведенной формулой)
Поясню:
допустим, у нас есть класс Foo (с DSL
foo(block: Foo.() -> Unit) = Foo().apply(block)
) и у него есть member (свойство или метод) bar. Хотелось бы, чтобы было валидным следующее выражение:
foo {
bar = 4*x + 1
}
, где x — некоторый изменяющийся параметр (взятый из внешнего скоупа или из класса Foo — неважно), но я хочу, чтобы Bar менялся по этой формуле при изменении x
Возможно ли такое нашаманить?
Спасибо!
Upd: Написал и сразу пришло в голову... Наверное, одним из самых простых решений было бы сделать для x класс, отнаследованный от CharSequence, с перегруженными арифметическими операциями, делающими конкатенацию, а при каждом обновлении x делать eval выражения и куда-нибудь складывать результат. Но будет круто, если у кого-то есть более эзотеричные решения :)
я вот только не знаю, можно ли как-то уменьшить вложенность, где launch + collect. но точно можно своё расширение написать, если будет проблемой
Обсуждают сегодня