Mã này đảo ngược một chuỗi:Tôi có thể sử dụng toán tử đường ống trong F # để chuyển đối số cho một hàm tạo không?
let reverse (s : string) = new string(s.ToCharArray() |> Array.rev)
này có thể được viết lại sử dụng các nhà điều hành đường ống dẫn để vượt qua các đối số bắt buộc để các nhà xây dựng string()
? Ví dụ: điều này có vẻ thành ngữ hơn:
// Doesn't compile:
let reverse (s : string) = s.ToCharArray() |> Array.rev |> new string
Tương tự, tại sao tôi không thể sử dụng toán tử string
theo cách sau?
let reverse2 (s : string) = s.ToCharArray() |> Array.rev |> string
Đây là nó trong hành động:
> reverse2 "foo" ;;
val it : string = "System.Char[]"
Nó trả về kiểu chứ không phải là "oof".
có thể trùng lặp của [Sử dụng ký hiệu ống F # với một hàm tạo đối tượng] (http://stackoverflow.com/questions/531178/using-the-f-pipe-symbol-with-an-object-constructor) – gradbot
Điều này nên có thể trong F # 4.0 khi nó xuất hiện: http://blogs.msdn.com/b/fsharpteam/archive/2014/11/12/announcing-a-preview-of-f-4-0-and-the -visual-f-tools-in-vs-2015.aspx –