What is the best way to use enrich-my-library in scala?
Asked Answered
C

1

6

The are two different way to implement it.

One is more short

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

Second is more long

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

Which one is better?

Cailly answered 22/2, 2012 at 20:12 Comment(3)
implicit class R3(s:String) { def getLength = s.length } :) I really hope that it will be included in Scala 2.10: docs.scala-lang.org/sips/pending/implicit-classes.htmlDutiable
a possible duplicate: How to implement intermediate types for implicit methods?. TL;DR the second is better performance-wise as the first way uses reflection under the hoodGuillemot
implicit classes are included in Scala 2.10, so perhaps the currently only answer to this question is obsolete.Pankhurst
E
11

The first version uses a structural type. It makes it possible to write short and readable code, but a disadvantage of structural types is that reflection is used at runtime when you call the method in the structural type. Calling a method via reflection is slower than calling a method directly.

More details are in this blog post (written by me): Avoid structural types when pimping libraries

Electrocute answered 22/2, 2012 at 21:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.