嘿,我有如下一段代碼:Scala中的apply()函數給出編譯錯誤?
var z:Array[String] = new Array[String](4);
z(0) = "Dave";
z(1) = "Joe";
z(2) = "Jim";
z.apply(3) = "Roger";
最後一行這裏是給編譯時錯誤說 - 「丟失的論據方法適用於Array類;按照這個方法用'_」,如果你想把它當作一個部分應用的函數「
這對我來說沒有意義,因爲我已經讀過,當你將一個多個值的括號應用於一個變量時,Scala會將代碼轉換爲一個名爲適用於該變量。 因此,如果下面一行:
z(2) = "Jim";
被轉換爲
z.apply(2) = "Jim";
那麼爲什麼行
z.apply(3) = "Roger";
給我一個編譯時錯誤?
我是新的斯卡拉,所以任何幫助將非常感謝!
有趣的問題,由於'陣列#apply' [文檔](http://www.scala-lang.org/api/current/ index.html#scala.Array)狀態:'指數從0開始; xs.apply(0)是數組xs的第一個元素。請注意,索引語法xs(i)是xs.apply(i)的縮寫。# –
您正在做的事情是對'update'進行除糖,而不是'apply'。 'update'的文檔類似:'索引從0開始; xs.update(i,x)替換數組中的第i個元素。請注意語法xs(i)= x是xs.update(i,x)的簡寫形式。' – Shadowlands