在scala中使用enrich-my-library的最佳方法是什么?

时间:2012-02-22 20:12:37

标签: scala enrich-my-library

实现它是两种不同的方式。

一个更短

implicit def toR1(s:String) = new { def getLength = s.length)}

第二个更长

class R2(s:String){def getLength2 = s.length)}
implicit def toR2(s:String) = new R2(s)

哪一个更好?

1 个答案:

答案 0 :(得分:11)

第一个版本使用structural type。它使编写简短且可读的代码成为可能,但结构类型的缺点是在结构类型中调用方法时在运行时使用反射。通过反射调用方法比直接调用方法要慢。

更多详细信息,请参阅此博客文章(由我撰写):Avoid structural types when pimping libraries