50 匹配泛型类型
两个 Box 分支在运行时区分 Box<Integer> 与 Box<String>,并让每个分支中的 item 具有相应类型。
norm
class Box<T> {
T item
}
String describe(Any candidate) {
return switch candidate {
case Box<Integer> box { break "number: ${box.item}" }
case Box<String> box { break "text: ${box.item}" }
case _ { break "other" }
}
}
main() {
Any number = Box<Integer>(item: 7)
Any text = Box<String>(item: "Norm")
printLine(describe(candidate: number))
printLine(describe(candidate: text))
}预期输出:
text
number: 7
text: Norm动手试试:加入一个 Box<Boolean> 候选值,预测会进入哪个分支。
精确规则:语言参考。