【问题标题】:Is there any way to use same parameter in io:format?有没有办法在 io:format 中使用相同的参数?
【发布时间】:2014-08-01 17:16:00
【问题描述】:

是否有任何构造或其他功能可以做这样的事情:

Var = "hello",
io:format("My text is ~s[1]. And again: ~s[1]", Var).

所以输出将是:

我的文字是你好。再说一遍:你好

【问题讨论】:

    标签: erlang format


    【解决方案1】:
    1. io:format() 的第二个参数应该是一个列表。
    2. 您可以这样做: io:format("我的文本是 ~s[1]。再说一遍:~s[1]", [Var, Var])。

    【讨论】:

    • 也许我没有正确写出问题。这是关于使用相同的参数而不再次将其添加到列表中。
    • 你必须将它添加到列表中两次,这就是 API 的样子。但是您不应该担心内存使用情况。 Erlang 作为函数式不会创建Var 的副本,而只会指向相同的内存两次。而且创建这样的列表也很便宜。
    • 好的,谢谢。不过,就可读性而言,它并不是那么好。这一切都来自我的 Python 根源:)
    【解决方案2】:

    这对我来说似乎有点矫枉过正,但你可以这样做:

    Vars = lists:duplicate(3, "hello").
    io:format("One: ~s, two: ~s, three: ~s.", Vars).
    

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 1970-01-01
      • 2018-12-26
      相关资源
      最近更新 更多