34 控制流收窄
空值检查可以在分支内证明可空值实际非空。
norm
Void show(String? value) {
if value == null {
printLine("none")
} else {
printLine(value.codePointSize())
}
}
main() {
show(value: null)
show(value: "Norm")
}预期输出:
text
none
4在 else 分支中,value 不可能是 null,因此可以调用 String 的 codePointSize()。若值可能变化,离开该分支后这个证明不一定继续成立。
动手试试:反转条件,并把长度调用移到非空分支。
详细规则:参考。