我讀通過,並通過使用類型類工作我的方式,我對面的無形指南定義類型類的這種方式來:Scala的類型類的最佳實踐
所以這裏去的例子:
object CsvEncoder {
// "Summoner" method
def apply[A](implicit enc: CsvEncoder[A]): CsvEncoder[A] =
enc
// "Constructor" method
def instance[A](func: A => List[String]): CsvEncoder[A] =
new CsvEncoder[A] {
def encode(value: A): List[String] =
func(value)
}
// Globally visible type class instances
}
我不明白的是應用方法的需要?在這方面上面做了什麼?
後來,指南介紹我怎麼可以創建一個類型類的實例:
implicit val booleanEncoder: CsvEncoder[Boolean] =
new CsvEncoder[Boolean] {
def encode(b: Boolean): List[String] =
if(b) List("yes") else List("no")
}
實際上縮短爲:
implicit val booleanEncoder: CsvEncoder[Boolean] =
instance(b => if(b) List("yes") else List("no"))
所以我現在的問題是,如何工作的呢?我沒有得到的是應用方法的需要?
編輯:
- 定義類型類合同特質富:我碰到一個描述如下創建類型類的步驟的博客文章來了。
- 使用輔助方法定義伴隨對象Foo,其作用類似於隱式方式,以及通常從函數定義Foo實例的方式。
- 定義定義一元運算符或二元運算符的FooOps類。
- 定義從Foo實例隱式提供FooOps的FooSyntax特徵。
那麼點數2,3和4的交易是什麼?
請您詳細說明創建類型類的這種做法嗎?我現在編輯了我的問題! – sparkr