2015-07-19 26 views
-2

爲什麼這個val aamir = chatter.Member("abc")行顯示編譯時錯誤?Scala中的內部類

package com.aamir.Classes 
import scala.collection.mutable.ArrayBuffer 


object Program7 extends App { 

val chatter = new Network 
val fred = chatter.join("Fred") 
val wilma = chatter.join("wilma") 
fred.contacts += wilma 

val myFace = new Network 
val barney = myFace.join("barney") 

val aamir = chatter.Member("abc") 

} 

class Network { 

    class Member(val name:String) { 

    val contacts = new ArrayBuffer[Member] 

    } 

    private val members = new ArrayBuffer[Member] 

    def join(name: String) = { 

    val m = new Member(name) 
    members += m 
    m 
    } 
} 
+0

你忘了'new'。或者,你可以使'會員'成爲一個案例班。 –

+0

@mz val chatter = new網絡已經在使用新的 – Aamir

+0

這是無關的 –

回答

2

Im相當肯定它應該是

val aamir = new chatter.Member("abc")

因爲成員是一類,而不是一個函數

+1

'val chatter = new Network'已經創建了聊天記錄,所以爲什麼在這裏和在scala再次使用新的記錄FYI一個類可以有像java中的方法那樣的參數 – Aamir

+0

'new網絡「創建一個網絡。 'new chatter.Member'創建一個'chatter.Member'。你有什麼煩惱? – sjrd

+0

編譯時間錯誤,我試圖從網絡類'val aamir = chatter.Member(「abc」)'行顯示編譯時間錯誤 – Aamir