加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala Option是否与C#Nullable类型相同?

发布时间:2020-12-16 09:55:45 所属栏目:安全 来源:网络整理
导读:在 Scala中,你有Option [Int],它将是Some(number)或None,并且有一个属性isDefined,它在第一种情况下返回true而在另一种情况下返回false. 在C#中你有int吗?它将是一个数字或null并具有一个属性HasValue,它在第一种情况下返回true而在另一种情况下返回false.
在 Scala中,你有Option [Int],它将是Some(number)或None,并且有一个属性isDefined,它在第一种情况下返回true而在另一种情况下返回false.

在C#中你有int吗?它将是一个数字或null并具有一个属性HasValue,它在第一种情况下返回true而在另一种情况下返回false.

Scala的选项与C#的Nullable类型相同,有什么区别吗?

解决方法

不,它完全不一样.除了其他答案:

> Scala有Option [Option [Int]]; C#没有int ??.
> Scala有Option [String]; C#没有字符串?
>在C#中,存在从T到T的隐式转换?在Scala中,没有从T到Option [T]的隐式转换(Scala允许您手动定义这样的转换,但不建议这样做).

这意味着Option比它更加统一和可组合?并允许它被更广泛地使用.例如. Scala的Map [K,V] .get(K)返回Option [V];但在.Net中,Dictionary<TKey,TValue>[TKey]无法返回TValue ?,因为TValue可以作为参考类型.甚至相当于Option.map也需要为返回值类型和引用类型的函数分别实现.

我还想重申一下应该避免!但是,当没有得到get时,isDefined完全没问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读