4

メンバー関数を抽出してF#関数として使用する方法はありますか?次のように書けるようにしたいと思います。

mystring |> string.Split '\n' |> Array.filter (string.Length >> (=) 0 >> not)

上記のコードは、[let]

let mystring = "a c\nb\n"
let stringSplit (y:char) (x:string) = x.Split(y)
let stringLength (x:string) = x.Length
mystring |> stringSplit '\n' |> Array.filter (stringLength >> (=) 0 >> not)
4

2 に答える 2

5

これは、私が数日前に尋ねた質問と非常によく似ています (ただし、あなたの言葉遣いの方が優れています)。コンセンサスは次のようです。

  1. いいえ。
  2. 構文string#Split"foo"#Split、または単に#Split(型推論) が将来追加される可能性があります。しかし、Tomas がリンクしたDon Syme の提案は 2007 年のものなので、それがどの程度実現する可能性があるかはわかりません。

編集:

"foo"#Splitと書くこともあると思いstring#Split "foo"ます。構文をどれだけ柔軟に定義するかにかかっていると思い#ます。

于 2010-06-11T20:06:21.377 に答える
3

使用する

(fun x -> x.Member ...)

今のところ。例えば

someString |> (fun s -> s.Split "\n") |> ...
于 2010-06-11T20:17:25.623 に答える