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

yur*_*ura 6 scala enrich-my-library

这是实现它的两种不同方式.

一个更短

implicit def toR1(s:String) = new { def getLength = s.length)}
Run Code Online (Sandbox Code Playgroud)

第二是更长

class R2(s:String){def getLength2 = s.length)}
implicit def toR2(s:String) = new R2(s)
Run Code Online (Sandbox Code Playgroud)

哪一个更好?

Jes*_*per 11

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

更多细节在这篇博客文章中(由我编写):在拉皮条库时避免使用结构类型