2014-09-29 3 views
1

Я хочу реализовать простейший пример типа.Что такое простейший пример в виде стилей

Вот и я: мой класс типов просто обычный Scala черта

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

Вот пример моего класса типов для типа Int

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

No. <произвольный текст, чтобы достичь предела мин> – vptheron

+0

Что не просто об этом? – rightfold

ответ

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") 
      ^
Смежные вопросы