Я пытаюсь выяснить правильный синтаксис, чтобы использовать оператор трубы | > в создании объекта. В настоящее время я использую статический член, чтобы создать объект и просто подключиться к нему. Вот упрощенная версия.
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