比方說,我有四節課斯卡拉:通過隱含參數的函數會返回另一個功能
class I
class A
class B
class C
和功能需要兩個參數,其中一個是隱含的,並返回另一個功能:
def f(arg: String)(implicit i: I): (C => B) => A = _ => new A
我在範圍內隱I
地方:
implicit val i = new I
所以,我娃NT調用f
這樣:
f("123") { c => new B }
但我對拉姆達PARAM c
可以missing parameter type error
不是因爲。好吧,讓我們明確地添加此參數:
f("123") { c: C => new B }
然後,我有類型不匹配:第二f
參數需要I
,而是爲C => B
!
我現在看到兩個選項,如何解決這個問題。首先是明確地簡單地傳遞參數:
f("123")(i) { c => new B }
但我們並不總是有權訪問隱式值。此外,我們可以把函數調用分成兩個表達式:
val g = f("123")
g { c => new B }
這給了我們所需要的,但代碼看起來繁瑣。我想調用更簡單的函數。
那麼,如何在一行中調用這樣的函數呢?