首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此表达式具有类型单位,但需要字符串类型的表达式。

此表达式具有类型单位,但需要字符串类型的表达式。
EN

Stack Overflow用户
提问于 2020-04-09 09:37:19
回答 1查看 358关注 0票数 0

我是奥卡姆的新手,

我试图弄清楚如何将“单元”类型常量“转换”为“字符串”类型。

我已经看到了用整数类型来执行string_of_int函数,但是找不到"unit“类型的等效值。也许这与普林茨有关,我使用Printf.printf "%B" (x);来处理布尔值,但我还没有弄清楚在"unit“类情况下应该使用什么。

下面是我的代码示例:

定义的职能:

let displayList l = List.iter(fun x -> print_string(string_of_int x^";")) l;;

利用上述功能:

  1. 以下表达式工作正常:let _ = displayList [5;5;6;5;5;6;3] in ();并显示"5;5;6;5;5;6;3;“。
  2. 以下表达式不起作用:let _ = print_string ("[" ^ displayList [5;5;6;5;5;6;3] ^ "]") in ();。它抛出错误消息“此表达式具有类型单位,但需要字符串类型的表达式”。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-09 10:57:46

您正在混合打印的值和返回的值。

displayList不返回string。它打印一个string,然后返回一个unit。字符串连接运算符(^)需要两个string,但是,如前所述,displayList的返回类型是unit

stringunit并不能像你所期望的那样做。displayList仍然会打印5;5;6;5;5;6;3;,您的表达式将返回一个类似于"[()]"的字符串。

如果您打算打印[5;5;6;5;5;6;3;],解决方案(使用您已经拥有的)可能是

代码语言:javascript
复制
let displayList l =
  print_char '[';
  List.iter(fun x -> print_string(string_of_int x^";")) l;
  print_char ']'
;;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61118130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档