例如說我有導入從其他類功能斯卡拉
class foo{
def bar = 7
}
class qaz{
//Here I want to have something like: val foobar = bar
//What I don't want to have is val foobar = (new foo).bar
}
卡尼如何實現這一目標?
例如說我有導入從其他類功能斯卡拉
class foo{
def bar = 7
}
class qaz{
//Here I want to have something like: val foobar = bar
//What I don't want to have is val foobar = (new foo).bar
}
卡尼如何實現這一目標?
您可以使用foo
的伴侶對象來定義bar
。
然後,你可以簡單地將其導入qaz
:
// in foo.scala
object foo {
def bar = 7
}
class foo {
// whatever for foo class
}
// in qaz.scala
import mypackage.foo.bar
class qaz {
val foobar = bar // it works!
}
有2種方式來實現這一目標:
使用伴侶對象
第二種方法,即需要一個伴侶對象納入方法,如已經由Jean實現:
class foo {
// whatever for foo class
}
//Companion Object
object foo {
def bar = 7
}
class qaz {
val foobar = bar
}
通過創建一個案例類,而不是一個普通的類,爲您創造了很多的樣板代碼,其中之一是應用方法的生成,因此您不需要使用new關鍵字來創建該類的新實例。
case class foo{
def bar = 7
}
class qaz{
val foobar = bar
}
這些方法中的兩個都是那種語法糖,但這樣做在後面同樣的事情,那就是使用一個同伴對象的應用功能。 嘗試this瞭解更多信息。
如果您檢查它,您的代碼將無法編譯。 –
哪一部分是特指? – ameenkhan07
'case class foo {...}'(在第二種情況下,除非使用非常古老的Scala版本)和'val foobar = bar'(在這兩種情況下)。 –
爲此,foo需要成爲foo.scala的伴侶對象?我還可以有班級嗎? – zunior
是的,你可以。我編輯了我的答案以清除它 –