Ответ 1
Ну, для Scala ради вы можете написать:
fun changeSelection(item: FileOrFolder, selected: Boolean) {
selection = when {
item is Folder && selected -> selection + item
item is Folder && !selected -> selection - item
item is File && selected -> selection + item
item is File && !selected -> selection - item
else -> throw Exception()
}
}
Более прямой вариант:
fun changeSelection(item: FileOrFolder, selected: Boolean) {
selection = if(selected)
when(item) {
is Folder -> selection + item
is File -> selection + item
else -> throw Exception()
}
else
when(item) {
is Folder -> selection - item
is File -> selection - item
else -> throw Exception()
}
}
Но я определенно предпочитаю:
operator fun Selection.plus(f: FileOrFolder) = ...
operator fun Selection.minus(f: FileOrFolder) = ...
fun changeSelection(item: FileOrFolder, selected: Boolean) {
if(selected)
selection += item
else
selection -= item
}