Series.hasNot
中功能Deedle
的帮助说:
Returns true when the series does not contains value for the specified key
在以下示例中,该函数似乎没有这样工作:
let election =
[ "Party A", 304
"Party B", 25
"Party C", 570
"Party Y", 2
"Party Z", 258 ]
|> series
let bhnt =
election
|> Series.hasNot "Party A"
printfn "%A" <| bhnt
// true
// val bhnt : bool = true
// val it : unit = ()
我错过了什么吗?
答案 0 :(得分:5)
我只看了Deedle source,看到了以下内容:
let has key (series:Series<'K, 'T>) = series.TryGet(key).HasValue
let hasNot key (series:Series<'K, 'T>) = series.TryGet(key).HasValue
是的,你发现了一个错误。 hasNot
函数应该看起来像not (series.TryGet(key).HasValue)
。
解决方法:在修复此错误之前,您可以通过Series.hasNot key
替换代码中所有出现的Series.has key
然后通过{{1功能。如,
not
或者,如果您认为它看起来更好,您也可以将其写为:
let bhnt =
election
|> Series.has "Party A"
|> not
这两种写作方式是等价的;您喜欢使用哪一个取决于您对功能编程的舒适程度。有些人发现let bhnt =
election
|> (not << Series.has "Party A")
语法更自然易读,而其他人则认为它非常奇怪,并且只想坚持使用<<
。这一切都取决于你对函数式编程的经验;选择这两者中哪一个对你来说最自然。