1
我通過奧賴利編程斯卡拉書的工作,並已運行到與此代碼示例中的絆腳石:爲什麼List(_ *)在Scala匹配表達式中無法匹配List(4,18,52)?
/* matching on sequences */
val willWork = List(1, 3, 23, 90);
val willNotWork = List(4, 18, 52);
val empty = List();
for(l <- List(willWork, willNotWork, empty))
{
l match
{
case List(_, 3, _, _) => println("Four elements, with the second being '3'.");
case List(_*) => println("Any other list with zero or more elements");
case _ => println("Uh, oh!");
}
}
根據文本,列表(_ *)應匹配任何列表中有零個或多個元素,但是當我執行此操作時,List(4,18,52)不匹配,並落入案例_部分(或者,如果刪除了,則拋出MatchError)。
任何想法,爲什麼這不匹配?自從這本書出版以來,這些語言有沒有變化?或者我剛剛有一個「你看不見自己的錯別字」的事情呢?
我在Eclipse內部使用Scala插件運行這個東西,它似乎使用Scala 2.8.0RC3。所以這可能是問題所在。不幸的是,我沒有看到指示Scala IDE使用不同的Scala編譯器/運行庫的方法。看起來我有更多的挖掘工作要做... – mindcrime 2010-12-20 01:55:24
@mindcrim:你可以看一下http://www.scala-ide.org/,看起來Scala 2.8.1有構建。 :) – 2010-12-20 02:41:41
是的,我發現它......我沒有意識到我的拷貝過時了。我剛升級到最新版本,現在按預期工作。謝謝! – mindcrime 2010-12-20 03:01:56