У меня есть объект x
. Я собираюсь выполнить серию преобразований. Это легко выразить какИдиоматический способ выполнения условного преобразования
x.transformA.transformB.transformC
Однако перед каждым преобразованием я должен также проверить состояние. Только если условие истинно, я должен выполнить преобразование. У меня есть два способа выразить это. Во-первых, нужно определить x как var.
var x = anObject
if (x.condA) x = x.transformA
if (x.condB) x = x.transformB
if (x.condC) x = x.transformC
// final result in x
В качестве альтернативы, чтобы избежать вар, я определить ряд промежуточных переменных
val x0 = anObject
val x1 = if (x0.condA) x0.transformA else x0
val x2 = if (x1.condB) x1.transformB else x1
val x3 = if (x2.condC) x2.transformC else x2
// final result in x3
Это кажется довольно громоздким, даже к ошибкам, когда я вырезать и вставить строки. Есть ли более идиоматический способ выразить это?
типа объекта никогда не меняется? Из выражений выше, 'xi.transform' - тот же тип, что и' xi' – maasg
Как насчет складки? – rethab