我在Coursera上学习Scala课程。我也开始读奥德斯基的Scala书了。
我经常听到的是,在函数式语言中抛出异常并不是一个好主意,因为它会破坏控制流,并且我们通常会返回一个失败或成功的。看起来Scala 2.10也将提供朝这个方向发展的尝试。
但在这本书和课程中,Martin Odersky似乎并没有说(至少现在)异常是不好的,他经常使用它们。我还注意到了assert /require方法...
最后,我有点困惑,因为我想遵循最佳实践,但它们并不清楚,语言似乎是双向的……
有人能解释一下在哪种情况下我应该使用什么吗?
发布于 2012-10-15 06:36:41
因此,这是Scala为了与遗留语言和环境(特别是Java )轻松过渡/互操作性而特别权衡函数纯度的地方之一。函数的纯洁性被异常破坏了,因为它们破坏了引用完整性,使得不可能进行等式推理。(当然,非终止递归也会做同样的事情,但很少有语言愿意执行那些不可能实现的限制。)为了保持函数的纯洁性,您可以使用选项/可能/任一/尝试/验证,所有这些选项都将成功或失败编码为引用透明类型,并使用它们提供的各种高阶函数或底层语言特殊的monad语法来使事情更清晰。或者,在Scala中,您可以简单地决定放弃函数纯洁性,因为您知道这可能会在短期内使事情变得更容易,但在长期内会更加困难。这类似于在Scala中使用"null“,或可变集合,或局部”var“。有点丢人,而且不会做太多,但每个人都在截止日期之前。
https://stackoverflow.com/questions/12886285
复制相似问题