オブジェクトの作成にパイプ演算子 |> を使用するための正しい構文を見つけようとしています。現在、静的メンバーを使用してオブジェクトを作成し、それにパイプするだけです。こちらが簡易版です。
type Shape =
val points : Vector[]
new (points) =
{ points = points; }
static member create(points) =
Shape(points)
static member concat(shapes : Shape list) =
shapes
|> List.map (fun shape -> shape.points)
|> Array.concat
|> Shape.create
私がしたいこと ...
static member concat(shapes : Shape list) =
shapes
|> List.map (fun shape -> shape.points)
|> Array.concat
|> (new Shape)
このようなことは可能ですか?静的メンバーの作成でコンストラクターを繰り返してコードを複製したくありません。
Update コンストラクターは、F# 4.0 のファースト クラスの関数です。
F# 4.0 の正しい構文は次のとおりです。
static member concat(shapes : Shape list) =
shapes
|> List.map (fun shape -> shape.points)
|> Array.concat
|> Shape