6

在《 Scala 编程》一书中,第 2 版。,作者写道:“在 Scala 中编写类型测试和强制转换相当冗长。这是故意的,因为不鼓励实践。通常最好将模式匹配与类型化模式一起使用。” 在其他地方,他们重复使用这些结构是“糟糕的风格”。

我完全同意 Scala 的模式匹配语法要好得多,但它不是类型检查和类型转换的基本语法糖吗?还是我错过了什么?

4

1 回答 1

14

它是糖,但它是非常有用的糖。您可能会遇到类型转换的真正麻烦

  • isInstanceOf打电话前不检查asInstanceOf
  • 忘记泛型不知道他们的参数类型isInstanceOf
  • 未涵盖所传递类型的所有情况

模式匹配正确地为您处理所有这些:如果确实有一个实例,您只会得到一个实例,它会警告泛型,如果您有不完整的匹配则会发出警告。因此,在类型测试和强制转换容易出错的情况下,模式匹配是健壮的并鼓励良好的设计。

于 2012-12-08T09:26:54.353 回答