私は透明implicit
変換は本当にこのような良いアイデアであり、明示的、ええと、実際にはより暗黙を使用する方がよいかもしれませんかどうかかどうかを疑問に思ってきました。例えば、私はパラメータとしてDate
を受け入れ、私はDate
にString
をオン暗黙の変換を持っている方法があるとします。Scalaの暗黙の使用方法の選択肢
implicit def str2date(s: String) : Date = new SimpleDateFormat("yyyyMMdd").parse(s)
private def foo(d: Date)
その後、明らかに私は透明implicit
変換でこれを呼び出すことができます。
foo("20090910")
文字列をより明示的な日付に変換していることを確認する方がよいでしょうか?
class DateString(val s: String) {
def toDate : Date = new SimpleDateFormat("yyyyMMdd").parse(s)
}
implicit def str2datestr(s: String) : DateString = new DateString(s)
それでは使用量は、より次のようになります。
foo("20090910".toDate)
これの利点は、それが何が起こっているかで、後に明確であるということである - 私は透明implicit
で今数回を見破られてきました私が知るべき変換(Option
〜Iterable
の人は誰ですか?)と、この使用法はまだimplicit
の力を利用することができます。