writefln()抛出:格式说明符不正确:%(%s,%)

时间:2014-07-01 12:46:28

标签: d dmd

为什么会抛出异常:

import std.stdio;

void main(string[] args) {
    try{
        writefln("My items are %(%s, %).", [1,2,3]);
    }catch(Exception x){
        writefln("oops: %s", x.msg);
    }
}

you can build and test the code at Ideone.com

我得到的结果是:

My items are oops: /usr/lib/dmd2/src/phobos/std/format.d(1592): 
Incorrect format specifier: %(%s, %).

根据http://dlang.org/phobos/std_format.html它应该有用......

2 个答案:

答案 0 :(得分:7)

请使用更新的D编译器。您可以从http://dlang.org/download.html下载最新版本的参考D编译器,也可以在http://dpaste.dzfl.pl/上在线编译和运行D程序。

答案 1 :(得分:4)

使用最近的编译器完全正常。如果你使用ideone.com来测试它,那那肯定是你的问题。 2.042现在已经存在多年了,而且很可能从那时起就添加了您尝试使用的功能。查看2.042 zip文件附带的文档,从那时起std.format的文档发生了巨大变化。所以,我想问的是你正在使用的是一个古老的编译器版本。 ideone.com多年来没有更新他们的D编译器,使它们成为测试D代码的可怕站点,尤其是如果它是你正在测试的标准库中的功能而不是语言本身

如果您想尝试在线编译D代码,我建议您试用dpaste。它实际上有一个最新的D编译器,因为它专门用于在线编译D代码示例。