2015-03-25 40 views
0

http://docs.scala-lang.org/tutorials/tour/implicit-parameters.html,它說Scala:隱式參數應該「沒有前綴」?

的實際參數有資格傳遞給隱含參數分爲兩類:

  • 首先,符合條件的,可以在被訪問的所有標識符X方法調用的沒有前綴的點和表示一個隱含定義或隱含的參數

這裏混淆我是那個,「沒有前綴」的意思是什麼?

+0

**沒有前綴**可變裝置,可直接在上下文中找到? – chenzhongpu 2015-03-25 08:28:42

回答

2

下面是一個例子:

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()因此可以被視爲隱含參數的點可見。 jInner對象的成員,因此不能在沒有前綴的情況下訪問,即Inner.j,因此只能顯式傳遞。要訪問j沒有前綴,所以它有資格成爲一個隱含的參數,我們不得不將其導入:

object Inner { 
    implicit val j = "goodbye" 
    } 

    def foo(implicit s: String) = println(s) 

    import Inner._ 

    foo           //> goodbye