为什么这个基本的 Asymptote 代码会返回错误?

为什么这个基本的 Asymptote 代码会返回错误?

我花了几个小时来理解为什么我的代码最终会产生错误(对于足够多的循环)。我将问题简化为以下 MWE:

file fout=stdout; // to write on Terminal

for(int j=1;j<=30;j=j+1) 
{
    write(fout,'\n');
    write(fout,j);

    for (int i=j; i<50; i=i+1)
    {
        file in1=input("gag.dat").line().csv();
    }
}

gag.dat可以是任何东西,包括空文件。我在两台独立的计算机上测试过(均在 Linux 下),都返回错误j达到30

10.6: runtime: Cannot open file "gag.dat"

这非常烦人,因为它阻止我制作动画。我可以按片段j(1 到 10、11 到 20 等)编译我的代码,但随后我必须重命名每个输出文件。

除了 bug 以外还能是别的什么吗?!

欢迎任何解决方案或解决方法。

答案1

除了 bug 以外还能是别的什么吗?!

是的。打开的文件应该关闭(用close(filename))...以下代码有效。

file fout=stdout; // to write on Terminal

for(int j=1;j<=30;j=j+1) 
{
    write(fout,'\n');
    write(fout,j);

    for (int i=j; i<50; i=i+1)
    {
        file in1=input("gag.dat").line().csv();
        close(in1); // <- ADDED LINE
    }
}

对不起打扰...

相关内容