gpt4 book ai didi

chapel - Chapel 中是否有默认的 String 转换方法?

转载 作者:行者123 更新时间:2023-12-01 13:35:45 24 4
gpt4 key购买 nike

当我尝试将对象转换为字符串时,是否会调用默认方法? (例如 Java 中的 toString 或 Python 中的 __str__。)我希望能够对对象数组执行以下操作,但其中一些可能为零:

for item in array {
writeln(item : string);
}

最佳答案

首先,将 nil 转换为字符串不一定是问题:

class C {
var x:int;
}

var array = [ new C(1), nil:C, new C(2) ];

for item in array {
writeln( item : string );
}

输出

{x = 1}
nil
{x = 2}

其次,如果您确实想要自定义 C 类的输出,您需要编写一个 writeThis 方法(或 readWriteThis 方法)。参见 The readThis(), writeThis(), and readWriteThis() Methods . writeThis 方法将被调用以用于转换为字符串和普通 I/O。例如:

class C {
var x:int;
proc writeThis(writer) {
writer.writef("{%010i}", x);
}
}

var array = [ new C(1), nil:C, new C(2) ];

for item in array {
writeln( "writing item : string ", item : string );
writeln( "writing item ", item);
}

输出

writing item : string  {0000000001}
writing item {0000000001}
writing item : string nil
writing item nil
writing item : string {0000000002}
writing item {0000000002}

关于为什么它以这种方式工作,它在未来可能做什么,以及当前策略的局限性,我还有更多可以说的......但是如果你愿意,邮件列表将是进行此类讨论的更好地方喜欢拥有它。

关于chapel - Chapel 中是否有默认的 String 转换方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441173/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com