【发布时间】:2016-05-10 21:45:29
【问题描述】:
Haskell 有“elem”谓词来表示:
Prelude> 5 `elem` [2,4..10]
False
在 F# 中,如何方便地判断一个值是在列表、数组、seq、map 还是字典中?
【问题讨论】:
Haskell 有“elem”谓词来表示:
Prelude> 5 `elem` [2,4..10]
False
在 F# 中,如何方便地判断一个值是在列表、数组、seq、map 还是字典中?
【问题讨论】:
在 F# 中是
List.contains <element> <list>
例子:
List.contains 5 [2..2..10]
-->
val it : bool = false
contains 也为其他容器类型定义。
【讨论】:
你可以使用:
List.exists ((=) 5) [1..5]
或者按照其他答案中的建议,如果您拥有最新的 F# 版本,请直接 List.contains。
Seq 也可以使用相同的功能。
【讨论】:
Array。还值得一提的是,如果您使用的是比 4.0 更旧的 F# 版本,您可以改用 Linq 扩展方法:例如[1..5].Contains(5)