在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完全没问题.
原文地址:https://codeday.me/bug/20190516/1115274.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。