所以我有一個教堂問題,我似乎無法弄清楚。我有一個可以設置大小的隊列。唯一的是它是設置大小,並用一堆0填充隊列(這是有道理的)。我試圖用null而不是數字值填充隊列,所以稍後當我使用add方法時,我可以檢查隊列是否爲空。我附加了如何設置一切的圖像。讓我知道你們是否有任何指導或想法。 是我得到的錯誤是:填充elilType與零值
錯誤:在分配從字符串類型不匹配爲int(64)
我一定要在這裏做了錯誤的方式。
所以我有一個教堂問題,我似乎無法弄清楚。我有一個可以設置大小的隊列。唯一的是它是設置大小,並用一堆0填充隊列(這是有道理的)。我試圖用null而不是數字值填充隊列,所以稍後當我使用add方法時,我可以檢查隊列是否爲空。我附加了如何設置一切的圖像。讓我知道你們是否有任何指導或想法。 是我得到的錯誤是:填充elilType與零值
錯誤:在分配從字符串類型不匹配爲int(64)
我一定要在這裏做了錯誤的方式。
你所看到的誤差約爲行:
elements[i] = 'nil';
'nil'
是一個字符串,而不是零值,這是寫作只是nil
沒有任何報價。將一個字符串指定給int(64)數組中的插槽不起作用,因此編譯器會發出錯誤。
在Chapel中,只有類可以有一個零值,所以你需要用不同的方式來跟蹤elements
數組中的哪個位置被填充。
要做到這一點的一種方法是將兩個新的整數添加到您的班級,以跟蹤包含有效值的第一個和最後一個職位。當您將值添加到隊列中時,last
的位置會增加,並且隨着您刪除值,first
的位置會增加。當這些值中的任何一個通過數組的末尾時,它都回到前面。如果last
曾經捕獲first
,那麼陣列已滿。如果first
曾經捕獲last
那麼該數組是空的。
一些其他的東西,我認爲應該在你的代碼進行修正是:
use semaphore.chpl;
使用報表與模塊名,文件名沒有工作,所以這大概應該是use semaphore;
。
如果我在這裏理解你的意圖,該代碼試圖在elements
數組的大小設置爲5
var elementsDomain: domain(1);
var elements: [elementsDomain] eltType = 5;
陣列的域控制數組的大小,所以順便設置數組大小是通過域:
var elementsDomain: domain(1) = {0..#5};
var elements: [elementsDomain] eltType;
elementsDomain = (0..capacity - 1);
是設置elementsDomain
的範圍文字值。這是可行的,因爲域是一維的,但爲了使其更清楚,您可以將其設置爲域字面值:{0..capacity - 1}
。