scala - 为什么在Scala中类型检查和类型转换被认为是较差的样式?

标签 scala types casting

在第二版的《在Scala中编程》一书中,作者写道:“在Scala中编写类型测试和强制类型转换相当冗长。这是有意的,因为这不是鼓励的做法。
通常,将模式匹配与类型化模式结合使用会更好。”在其他地方,他们重复使用这些结构是“较差的样式”。

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

最佳答案

它是糖,但它对糖非常有帮助。您可能会对类型强制转换造成真正的麻烦,方法是

  • 在调用isInstanceOf
  • 之前不检查asInstanceOf
  • 忘记泛型不知道使用isInstanceOf的参数类型
  • 没有涵盖所有要传递的类型的情况

  • 模式匹配可以正确地为您处理所有这一切:只有在实际存在一个实例的情况下,您才能获得一个实例,它会针对泛型发出警告,而如果您的匹配不完整,则会发出警告。因此,在类型测试和类型转换容易出错的情况下,模式匹配是健壮的,并鼓励良好的设计。

    关于scala - 为什么在Scala中类型检查和类型转换被认为是较差的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775964/

    相关文章:

    arrays - 从Scala中的数组中过滤出空数组

    java - Scala 到 Java(函数式编程)

    java - Java 类型系统中的错误?

    F# 测量单位,类型转换时不丢失测量类型

    python - 将 KERAS 张量转换为 K.tf.int32

    performance - scala中的应用程序监控性能

    scala - 如何在 spark-scala 中将 Iterable[String] 保存到 hdfs

    Scala:如何使用类型参数化在类内部打印

    python - 数组的 cython/numpy 类型

    c# - .NET 转换通用列表