2014-09-29 42 views
1

我想实现最简单的类型示例。什么是最简单的类型示例

我来了:我的类型类只是一个普通的Scala特质

scala> trait Show[A] { def show(a: A) : String } 
defined trait Show 

这里是我的类型类类型的实例诠释

scala> implicit val IntShow = new Show[Int] { def show(i: Int) = s"'$i' is an int" } 
IntShow: Show[Int] = [email protected] 

下面是一个使用我的类型类客户端代码

scala> def f[A](a:A)(implicit s : Show[A]) = println(s.show(a)) 
f: [A](a: A)(implicit s: Show[A])Unit 

我们称之为

scala> f(1) 
'1' is an int 

难道会更简单吗?

+1

号<随机文本达到最小限定> – vptheron 2014-09-29 18:05:18

+0

什么是不简单这个? – rightfold 2014-09-29 18:38:59

回答

5

当然 - 您可以删除该方法。

scala> trait Show[A] 
defined trait Show 

scala> implicit object IntShow extends Show[Int] 
defined object IntShow 

您还可以通过使用上下文绑定而不是隐式参数来清理使用代码。

scala> def f[A : Show](a: A) = a 
f: [A](a: A)(implicit evidence$1: Show[A])A 

呼叫范例(以证明这种类型的类具有至少一定的效果):

scala> f(3) 
res0: Int = 3 

scala> f("3") 
<console>:11: error: could not find implicit value for 
evidence parameter of type Show[String] 
       f("3") 
      ^
相关问题