Выезд FuncCell . Это просто еще одна ячейка, которая будет определять ее значение в зависимости от одной или нескольких других ячеек. Ссылка, которую я дал, является сопутствующим объектом, который имеет методы применения для 1-5 ячеек, соответствующих существующим реализациям FuncCell1 .. FuncCell5
. Когда одна из этих ячеек изменит значение, FuncCell обновит свое собственное значение - тогда вы подключите WiringUI
к вашему FuncCell.
Пожалуйста, простите за любые синтаксические ошибки, у меня нет открытой IDE, чтобы проверить себя ...
val changed: Cell[List[String]] = FuncCell(length, content){(len,con) =>
def filter(s: String) = (s.length == len) && (s.contains(con))
referenceList.filter(filter _)
}
Если все верно, то changed
теперь является Cell
, значение которого будет отражать результат вызова referenceList.filter
В ответ на ваши изменения относительно SeqCell
я могу придумать два решения:
1) Используйте Any
в качестве параметра типа в SeqCell
val cell1: ValueCell[Int] = ...
val cell2: ValueCell[String] = ...
val cell3: ValueCell[Stuff] = ...
...
val combined: SeqCell[Any] = SeqCell(cell1, cell2, cell3, ...)
val results = FuncCell(combined){ seq: Seq[Any] => ... }
2) Объедините промежуточные ячейки в кортежи, чтобы вы могли использовать существующие реализации FuncCell.
val intermediate1: Cell[(Int,String)] =
FuncCell(cell1,cell2){(a:Int, b:String) => a -> b}
val results =
FuncCell(intermediate1, cell3){(i: (Int, String), s: Stuff) => ...}