gpt4 book ai didi

c# - 可选引用文献类型

转载 作者:行者123 更新时间:2023-12-02 23:26:59 24 4
gpt4 key购买 nike

Possible Duplicate:
Why Option[T]?

引用类型提供特殊值null意思是“缺乏值(value)”。值类型没有这样的值,这就是 C# 引入可选值类型(以及它们的特殊语法)的原因。

Scala 的 Option[T]具有三个不同的“空”值:null , NoneSome(null) 。在安全性和可表达性方面,这种增加的复杂性到底给我们带来了什么?我什么时候使用哪个?

最佳答案

好的 Scala 实际上只有一个空值:None。不要使用 null(除非是为了向后兼容现有的 Java 代码)。

关于为什么 Option[T] 有用的问题有很多答案。例如:参见this .

简短版本:

它使可选性质成为显式签名。下面清楚地表明我们期望 t 可以为“null”:

def f(t: Option[T]) 

您不必在操作前进行空检查:(i: Option[Int]) => i.map(_ + 1) 无论i 都可以正常工作> 是 Some(5)None并且 保留 Option 包装器以指示输入可能是None(因此,输出也可能是None)。

def f(i: Option[Int]) = i.map(_ + 1)
f(Some(5)) // Some(6)
f(None) // None

您可以轻松地将它们与其他Option或集合组合:

val a: Option[Int] = Some(1)
val b: Option[Int] = Some(6)
val c: Option[Int] = Some(5)
val d: Option[Int] = None
for(x <- a; y <- b; z <- c) yield x + y + z // Some(12)
for(x <- a; y <- d; z <- c) yield x + y + z // None

关于c# - 可选引用文献类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9754639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com