可选/也许类型在动态语言中有用吗?


14

Optional在静态类型的语言中以明显的方式很有用,但是我想知道它是否在动态语言中也有用。通常,没有编译器告诉您“嘿,您将其Optional<String>用作String”,因此您仍然必须在运行时发现错误。我有一个静态的打字背景,从我的角度看,我看不到Optional使用动态语言打字的好处。

Answers:


13

这种弱点实际上与动态语言中的所有类型没有区别。您必须运行它才能找出其中的内容。在这方面,选项并没有什么不同。

选项不仅仅是一个静态注释,该注释可能会或可能不会出现一个值。他们也有与之相关的操作。选项上的映射操作链是一项非常有用的功能,使您不必在链中的每个步骤之后都检查是否有故障。

即使您只是立即检索到该值,它仍然会促使程序员检查Nothing它第一次运行并失败。如果没有选择,则只有在null您第一次运行该碰碰时,才会进行该碰碰。许多空指针取消引用一直顽固地等待,直到产品进入现场为止。


0

我可以谈谈Objective-C。

由于动态类型语言的绑定较晚,因此检查“可选”(用表示非值nil)是固有的:如果在运行时检查类型,则会nil隐式检查。当然,这是可链接的。这也是固有的。

对于静态类型的语言,此额外的概念是一个好处,因为它们必须在编译时决定类型,而动态类型的语言则从来没有这种情况。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.