4

有没有办法提取成员函数,并将它们用作 F# 函数?我希望能够编写以下内容:

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

如果你 [让] 上面的代码有效

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 回答