2012-11-05 29 views
-6

任何人都可以幫助我解決一個begginer問題嗎?我寫了一個函數來檢查聲明,但我不能將元素Symbol()添加到List env。我不明白這件事是什麼。無法添加元素到Scala中的List()

def check_decl(env: List[Symbol])(decl: Declare): Unit = decl match{ 
case VarDec(varName, varType)=>{ 
    lookupForInsert(env)(varName.toString()) match { 
    case Some(_) => throw Redeclared(Variable,varName.toString()) 
    case None => { 
      varType match{ 
      case ArrayType(lower, upper, element)=>{ 
      if(lower > upper) throw SizeIsNotNegative(decl) 
      } 
      case IntType=> 
      case RealType=> 
      case BoolType=> 
      case StringType=> 
     }    
    } 
    } 
} 
+0

你說你的問題是*「我不能將元素Symbol()添加到List env」*中,但是你在你提供的代碼片段中用'env'做的唯一的事情是將它傳遞給另一個函數。如果你真的想得到答案,你將需要提供更多的細節。 – DaoWen

回答

0

在斯卡拉你有默認的不可變列表,你不能「添加」一些東西。所有會修改Java中的列表(或更類似的堆棧)的操作都將導致在Scala中修改列表新的。或者,您有像ListBuffer這樣的可變類,其行爲更像Java列表。