当前位置:  开发笔记 > 编程语言 > 正文

是否有可能在ocaml中重现python的字符串插值?

如何解决《是否有可能在ocaml中重现python的字符串插值?》经验,为你挑选了1个好方法。

在python中,可以使用"%"运算符的printf格式化:

"i am %d years old" % 99

要么

"%s is %d years old" % ("bob", 101)

对于任意数量的参数,有没有办法在Ocaml中获得相同的简洁语法?

对于单个参数,以下工作:

let (%) = Printf.sprintf in ... "i am %d years old" % 99

有没有一种方法适用于任意数量的参数?



1> Norman Ramse..:

这取决于你的意思是任意数量的参数:

我不相信这是写在OCaml中的函数可以接受的方式和解压任意元数的元组(例如,都(1, "bob")("joe", "bob", "briggs")).

处理多个参数的Caml方式不是通过元组,而是通过currying.如果你愿意这样做,那么你可以使用Printf.sprintf.

如果你真的想要一个中缀操作符,例如,类似的东西

"%s-%s %s is the best movie reviewer" % "joe" "bob" "briggs"

然后你运气不好,因为函数应用程序比任何中缀运算符都更紧密.你可以写

("%s-%s %s is the best movie reviewer" % "joe") "bob" "briggs"

但对我来说似乎有点不合适 - 不是你正在寻找的机器人.

所以如果你的问题是:

我可以在Objective Caml中定义一个接受任意数量参数的中版本sprintf吗?

答案是否定的.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有