簡體   English   中英

Scala隱式上下文解析

[英]Scala implicit context resolution

我發現有用於SLS隱式解決規則的規則:

  1. 如果T是具有...和Tn的復合類型T1,則T1,...,Tn以及T本身的部分的並集

  2. 如果T是參數化類型S [T1,...,Tn],則S和T1,...,Tn的部分的並集

  3. 如果T是單例類型p.type,則p類型的部分

  4. 如果T是類型投影S#U,則S的部分以及T本身

  5. 在所有其他情況下,僅T本身

下面的示例是否基於規則4隱式解決?

object Foo{
   trait Bar
   implicit def newBar = new Bar{
        override def toString = "Implicit Bar"
   }

}

implicitly[Foo.Bar]

謝謝

Zlaja

是的,我相信這是正確的。 我認為對於單例對象Foo ,類型Foo.BarFoo.type#Bar相同:

implicitly[Foo.type#Bar] // ok

也:

def a(f: Foo.type#Bar) {}
def b(f: Foo.Bar) { a(f) }       // accepted

def c(f: Foo.Bar) {}
def d(f: Foo.type#Bar) { c(f) }  // accepted

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM