2017-04-16 24 views
3

當我嘗試將對象轉換爲字符串時,是否存在被調用的默認方法? (如的toString Java或__str__在Python)我希望能夠做對象數組以下,但其中一些可能是零:Chapel中是否有默認的字符串轉換方法?

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

回答

3

首先,鑄造零字符串ISN 「T一定有問題:

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} 

還有更多的,我可以說一下爲什麼是這樣工作的,它可能會在未來做的,目前戰略的侷限性......但如果您希望獲得此類討論,郵件列表將成爲更好的討論場所。

相關問題