在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
有没有一种方法适用于任意数量的参数?
这取决于你的意思是任意数量的参数:
我不相信这是写在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
吗?
答案是否定的.