我是奥卡姆的新手,
我试图弄清楚如何将“单元”类型常量“转换”为“字符串”类型。
我已经看到了用整数类型来执行string_of_int函数,但是找不到"unit“类型的等效值。也许这与普林茨有关,我使用Printf.printf "%B" (x);来处理布尔值,但我还没有弄清楚在"unit“类情况下应该使用什么。
下面是我的代码示例:
定义的职能:
let displayList l = List.iter(fun x -> print_string(string_of_int x^";")) l;;
利用上述功能:
let _ = displayList [5;5;6;5;5;6;3] in ();并显示"5;5;6;5;5;6;3;“。let _ = print_string ("[" ^ displayList [5;5;6;5;5;6;3] ^ "]") in ();。它抛出错误消息“此表达式具有类型单位,但需要字符串类型的表达式”。发布于 2020-04-09 10:57:46
您正在混合打印的值和返回的值。
displayList不返回string。它打印一个string,然后返回一个unit。字符串连接运算符(^)需要两个string,但是,如前所述,displayList的返回类型是unit。
用string做unit并不能像你所期望的那样做。displayList仍然会打印5;5;6;5;5;6;3;,您的表达式将返回一个类似于"[()]"的字符串。
如果您打算打印[5;5;6;5;5;6;3;],解决方案(使用您已经拥有的)可能是
let displayList l =
print_char '[';
List.iter(fun x -> print_string(string_of_int x^";")) l;
print_char ']'
;;https://stackoverflow.com/questions/61118130
复制相似问题