2015-03-30 46 views
1

我想追加到列表的ADT內部如下:追加到列表內部ADT

data MyADT = myadt(list[str] s); 
m = myadt([]); 
m.s += "test"; 

這將導致一個錯誤:

|prompt:///|(0,3,<1,0>,<1,3>): Expected list[str], but got str 
?[Advice](http://tutor.rascal-mpl.org/Errors/Static/UnexpectedType/UnexpectedType.html) 

這似乎像它應該工作,因爲這種工作:

x = []; 
x += "test"; 

也許我在這裏失去了一些東西?

謝謝!

回答

1

試試這個作爲一種解決方法:

rascal>m.s += ["test"]; 
MyADT: myadt(["test"]) 

它看起來像一個錯誤。

順便說一下,我們將刪除+的重載以添加元素和連接列表,並引入用於添加元素的特殊操作符。它現在很混亂。

+0

只要輸入'ms = ms +'test''也應該可以正常工作,很可能這是計算給定一個void容器的類型時的問題(儘管我很驚訝Rascal認爲它是無效的,因爲它有一個明確的類型聲明)。 – 2015-03-30 20:53:11

+0

謝謝!我已經來到了這個解決方法,並認爲我嘗試了第二個,但我想我沒有。 – josh 2015-03-31 01:34:12