为什么Scala编译器没有捕获这个隐式绑定?

时间:2014-07-29 15:11:34

标签: scala implicit

我在下面设置了一个隐式绑定,期望 TweetProvider 特征将绑定到 FancyRestaraunt (即用于模拟推特的玩具应用程序)饲料,人们在花哨的餐厅吃饭后会发出推文。

但是,似乎我创建的隐式绑定没有被利用。

有关此实施方式不正确的任何想法?

import scala.Product
import scala.io.BytePickle.PU
import scala.tools.cmd.ParserUtil

trait TweetProvider[Prod] {
  def getTweet(a:Prod): String;
}

class FancyRestaurant {
  def name(){
    "Fancy Restaurant"
  }
}

class RestaurantTweetosphere {

  def getTweet[Prod]
    (prod : Prod)
    (implicit product : TweetProvider[Prod])
        = product.getTweet(prod);

  implicit val FancyRestaurantTweet = new TweetProvider[FancyRestaurant]{
    def getTweet(r : FancyRestaurant) = {
      "OMG I love this "+r.name();
    }
  }

  def run() = {
    val c = new FancyRestaurant;
    c.getTweet() // <-- doesnt compile

  }

}

0 个答案:

没有答案