Я пытаюсь выяснить правильный синтаксис, чтобы использовать оператор трубы |> при создании объекта. В настоящее время я использую статический член для создания объекта и просто подхожу к нему. Вот упрощенная версия.
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)
Возможно ли что-то подобное? Я не хочу дублировать код, повторяя мой конструктор со статическим членом create.
Обновление
Конструкторы являются первоклассными функциями с F # 4.0
В F # 4.0 правильный синтаксис:
static member concat(shapes : Shape list) =
shapes
|> List.map (fun shape -> shape.points)
|> Array.concat
|> Shape