Skip to content

80 集合变更通知 ​

对集合字段的订阅能以旧值/新值快照观察原位 List 变更。关闭订阅只停止通知,不阻止后续列表修改。

norm
import std.observation.onChange

class Tasks { List<String> titles = [] }

main() {
  Tasks tasks = Tasks()
  var subscription = tasks.titles.onChange {
    printLine("${oldValue.size()} -> ${newValue.size()}")
  }
  tasks.titles.add("Learn")
  tasks.titles.add("Build")
  subscription.close()
  tasks.titles.add("Publish")
  printLine(tasks.titles.size())
}

预期输出:

text
0 -> 1
1 -> 2
3

动手试试:把列表替换为内容相同的新列表,观察是否触发通知。

精确规则:参考。

Norm 0.25