당신은 오버로드 된 생성자 또는 apply
방법을 사용할 수 있습니다). implicit def
은 동반자 클래스 또는 도우미 클래스/특성 (케이크 패턴의 특성)에있을 수 있습니다. 이런 식으로 뭔가 :
implicit def `string to url`(s: String) = new URL(s)
사용법 :
import the.helper.Container._
//or implement the Helper trait containing the implicit def
val url: URL = "http://google.com"
의 단점은, 예외는 예상치 못한 곳에서 도착할 수는 (있는 import
추가로 필요할 수 있습니다).
덜 암시 적 접근 방식이 될 것 같은, String
에 toURL
방법을 "추가"@ MZ 년대에
가
import Helpers._
val aUrl = "http://google.com".toURL
비교 :이의
object Helpers {
implicit class String2URL(s: String) {
def toURL = new URL(s)
}
}
사용이 같을 것이다 답 : 여러 매개 변수를 조합하여 여러 매개 변수를 조합하지 않고도 여러 매개 변수를 조합 할 수 있습니다. 반면에 해당 응답의 경우 지수가 작습니다 (이 경우 1
과 같이 작은 지수의 경우 완벽하게 괜찮습니다). @ m-z의 대답은 재사용 할 수 없으며 다른 수업이 필요하면 다시 작성해야합니다. 라이브러리 측면에서 작동하므로 lib 사용자는 멋진 설명서를 얻고, 사용 방법을 안내하고, 광산은 "마법"및/또는 작은 사용자 도움말 (import
, 메서드 toURL
변환 방법 호출)과 함께 작동합니다. 특히 @Option
또는 Try
의 조정으로 @m-z의 작은 조합에 대한 솔루션을 선택합니다. 그러나 여러 매개 변수에 과부하가 필요한 경우 솔루션이 더 잘 작동한다고 생각합니다. 실제로 사용 사례에 따라 다릅니다. (전달 된 URL이 유효하지 않은 경우에도 Try
으로 광산을 감쌀 수 있습니다.)
IMHO 적용 방법에 대해'Option [A]'또는'Try [A] 새 URL'이 실패 할 수 있습니다. – Dimitri