2012-10-04 35 views
3

我是一個關於集合的scala學習的新學習者。我想將我的參數添加到集合中,然後從函數中返回它。編譯器說我沒有爲Set指定類型(類型不匹配)

def singleElementSet(elem: Int): Set ={ 
    var newSet = Set() 
    newSet+= elem 
    } 

我試過,但它給了我這樣的錯誤:

type Set takes type parameters 
- type Set takes type parameters 

爲ELEM

type mismatch; found : elem.type (with underlying type Int) required: Nothing 

回答

2

我想什麼你想要的是像

def singleElementSet(elem: Int): Set[Int] = { 
    val newSet = Set.empty[Int] 
    newSet + elem 
} 

,或者你可以只創建一套直接

def singleElementSet(elem: Int) = Set(elem) 
3

你必須定義什麼套裝將在它被設置在你的例子中[Int]。創建一個新的設置時,你要麼必須指定它的類型是這樣的:有一些

val newSet = Set.empty[Int] 

或初始化設置:

val newSet = Set(1) 

然而,你可能會要麼不得不使用VAR或可變設置完成很多。例如,你的代碼應該是這個樣子:

var newSet = Set.empty[Int] 
def singleElementSet(elem: Int): Set[Int] = { 
    newSet+= elem 
} 

(無法定義設置爲你調用方法空集,每次或結果不會加起來)

+0

感謝喬丹在r eply,我添加了Set [Int],但它仍然給我 「類型Set需要類型參數」錯誤。 – Shahzeb

+0

這是因爲您將Set()的參數留空。 –

+0

是不是正確的方式來聲明一個空集? – Shahzeb