0
據http://docs.scala-lang.org/tutorials/tour/implicit-parameters.html,它說Scala:隱式參數應該「沒有前綴」?
的實際參數有資格傳遞給隱含參數分爲兩類:
- 首先,符合條件的,可以在被訪問的所有標識符X方法調用的沒有前綴的點和表示一個隱含定義或隱含的參數
這裏混淆我是那個,「沒有前綴」的意思是什麼?
據http://docs.scala-lang.org/tutorials/tour/implicit-parameters.html,它說Scala:隱式參數應該「沒有前綴」?
的實際參數有資格傳遞給隱含參數分爲兩類:
- 首先,符合條件的,可以在被訪問的所有標識符X方法調用的沒有前綴的點和表示一個隱含定義或隱含的參數
這裏混淆我是那個,「沒有前綴」的意思是什麼?
下面是一個例子:
implicit val i = "hello" //> i : String = hello
object Inner {
implicit val j = "goodbye"
}
def foo(implicit s: String) = println(s)
foo("explicit") //> explicit
foo(Inner.j) //> goodbye
foo //> hello
i
是在調用foo()
因此可以被視爲隱含參數的點可見。 j
是Inner
對象的成員,因此不能在沒有前綴的情況下訪問,即Inner.j
,因此只能顯式傳遞。要訪問j
沒有前綴,所以它有資格成爲一個隱含的參數,我們不得不將其導入:
object Inner {
implicit val j = "goodbye"
}
def foo(implicit s: String) = println(s)
import Inner._
foo //> goodbye
**沒有前綴**可變裝置,可直接在上下文中找到? – chenzhongpu 2015-03-25 08:28:42