2017-03-29 1 views
3

Deedle의 기능 Series.hasNot에 대한 도움말은 말한다 :Series.has에 버그가 있습니까?

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 =() 

내가 뭔가를 놓치고 있습니까?

+1

Deedle에서이 버그가 수정 될 때까지 사용할 수있는 대안으로 내 의견이 업데이트되었습니다. – rmunn

답변

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)처럼 보입니다.

해결 방법 :이 버그가 수정되어 때까지, 당신은 not 기능을 통해 배관 다음 Series.has key하여 코드에 Series.hasNot key의 모든 항목을 대체하고하여 해결할 수 있습니다.

let bhnt = 
    election 
    |> (not << Series.has "Party A") 

을 작성하는이 두 가지 방법

은 동일합니다; 당신이 좋아 보이는 생각하는 경우, 예를 들어,

let bhnt = 
    election 
    |> Series.has "Party A" 
    |> not 

은 또는, 당신은 또한 같은 것을 쓸 수 어느 쪽을 사용 하시겠습니까? 이것은 당신이 기능 프로그래밍을 얼마나 편안하게 사용 하느냐에 달려 있습니다. 어떤 사람들은 << 구문을 더 자연스럽게 읽는 반면, 다른 사람들은 완전히 이상하다고 생각하고 오직 |>만을 사용하려고합니다. 그것은 모두 당신이 함수형 프로그래밍에 얼마나 경험이 있는지에 달려 있습니다. 이 두 가지 중에서 가장 자연스러운 것을 선택하십시오.

+2

이 버그를 해결하기 위해 https://github.com/BlueMountainCapital/Deedle/pull/361을 제출했습니다. – rmunn

+0

수정을 보내 주셔서 감사합니다! CI에 무엇이 잘못되어 있는지 파악하고 병합해야합니다. –