2016-10-04 101 views
1

鑑於類:斯卡拉對象:通過或從函數返回

object Obj {...} 

有沒有一種方法來傳遞對象的功能或者功能類似這樣的返回對象:

def f(x: Obj): Boolean 
def g(x: Boolean): Obj 

兩個兩個例子的原因CE(編譯錯誤)。

我知道有可能在函數f的主體中直接使用名稱爲Obj的對象,所以第一個例子大多是理論上的而不是實際的。但對於第二個例子,我看不到其他方式。

顯然這兩個例子都是'antipatterns',scala對象不應該這樣應用。

+0

想一想,是'Obj'一個類型? – thefourtheye

+0

'object'不是一個類,它是某個類的一個實例,對於你的'Object'(或'AnyRef')。 –

+0

謝謝!當然,這是一個單身物件。但正如你在下面的答案中看到的那樣,這個對象的類型是'Obj.type',並且使用這個語法可以將它作爲參數傳遞給fucntion並從fucntion中返回。 –

回答

3

使用Obj.type

scala> object O 
defined object O 

scala> def f(o: O.type) = 42 
f: (o: O.type)Int 

scala> f(1) 
<console>:14: error: type mismatch; 
found : Int(1) 
required: O.type 
     f(1) 
     ^

scala> f(O) 
res1: Int = 42