sách gpt4 ai đã đi

Ngoại lệ F# printfn

In lại 作者:行者123 更新时间:2023-12-05 01:25:02 26 4
mua khóa gpt4 Nike

谁能解释一下为什么这会导致错误:

let xs = [| "Mary"; "Mungo"; "Midge" |]

Array.iter printfn xs

虽然不是这样:

Array.iter printfn [| "Mary"; "Mungo"; "Midge" |]

1 Câu trả lời

printfn 的签名是Printf.TextWriterFormat<'a> -> 'a .编译器将字符串的文字值推断为 Printf.TextWriterFormat但不能使用动态字符串。

您可以通过添加正确的类型注释来帮助第一个示例中的编译器:

let xs: Printf.TextWriterFormat [] = [| "Mary"; "Mungo"; "Midge" |]
Array.iter printfn xs

或使用显式构造函数:

let xs = [| "Mary"; "Mungo"; "Midge" |]
Array.iter (fun s -> printfn <| Printf.TextWriterFormat(s)) xs

一般来说,这样做太冗长了。因此,指定格式字符串如 "%s"对于字符串和 "%O"对于覆盖 ToString() 的类型方法是最好的方法:

let xs = [| "Mary"; "Mungo"; "Midge" |]
Array.iter (printfn "%s") xs

关于F# printfn 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11708229/

26 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com