Skip to content

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> 候选值,预测会进入哪个分支。

精确规则:语言参考。

Norm 0.25