Каков наилучший способ использования enrich-my-library в scala? - PullRequest
6 голосов
/ 23 февраля 2012

Это два разных способа его реализации.

Один короче

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 Ответ

11 голосов
/ 23 февраля 2012

В первой версии используется структурный тип . Это позволяет писать короткий и читаемый код, но недостатком структурных типов является то, что отражение используется во время выполнения, когда вы вызываете метод структурного типа. Вызов метода с помощью отражения медленнее, чем прямой вызов метода.

Больше подробностей в этом посте (написано мной): Избегайте структурных типов при развертывании библиотек

...