在Scala中,功能可以由撰寫應用樣式的功能
def f = { x:Int => x + 420}
f.compose(f)
還有一個方法來定義對象
object F {
var y = 420
def apply (x: Int) = x + y
}
println(F(3))
功能應用我該如何撰寫這些功能樣對象?以下不起作用。
println(F.compose(F))
在Scala中,功能可以由撰寫應用樣式的功能
def f = { x:Int => x + 420}
f.compose(f)
還有一個方法來定義對象
object F {
var y = 420
def apply (x: Int) = x + y
}
println(F(3))
功能應用我該如何撰寫這些功能樣對象?以下不起作用。
println(F.compose(F))
您可以創建一個匿名函數F(_)
並撰寫那些:F(_).compose(F(_))
(編輯:見維克多莫羅茲的評論)。
您還可以使您的對象的功能:object F extends (Int => Int)
和寫F.compose(F)
。
1.'(F(_))。compose(F(_:Int ))'或'(F(_))。compose [Int](F(_))' –
奇怪:我明白爲什麼需要圍繞第一個'F(_)'的括號(它是'x => F ).compose(F(_))'沒有它們),但不是爲什麼編譯器不能推斷出類型參數。 –
一種可能的方式來實現:
F.apply _ compose F.apply _
它是否必須是一個對象? 'val f = new Function [Int,Int] {...}'? –
@VictorMoroz這基本上是我在我的第一個代碼片段中定義的,我只是好奇如果有一種方法來編寫具有'apply'定義的對象 – xuanji