我试图将列表中的整数转换为相应的ASCII值,然后将它们连接起来形成一个字符串。这就是我试过的:
# let l = [65;66;67];;
# List.fold_left (fun x y -> char_of_int x ^ char_of_int y) "" l;;
我收到以下错误:
Error: This expression has type char but an expression was expected of type
string
将char_of_int x
标记为错误。
答案 0 :(得分:2)
发生错误,因为OCaml运算符^
只接受两个字符串,它不能直接连接两个字符。为了构建字符串,首先必须将单个字符转换为字符串(长度为1)。然后你可以连接这些短字符串。
# let chars = List.map char_of_int l;; val chars : char list = ['A'; 'B'; 'C'] # let strings = List.map (String.make 1) chars;; val strings : string list = ["A"; "B"; "C"] # String.concat "" strings;; - : string = "ABC"