Ich habe eine Methode, die einige andere Methoden aufruft, die ein implizites vom Typ Foo
verwenden. Ich möchte f implizit in Foo machen. Dies ist, wie ich es tun:Ein implizites Argument innerhalb einer Methode markieren
def myMethod(a: Int, f: Foo) = {
implicit val implicitF = f;
somethingThatNeedsFoo(a)
}
Ich will nicht f
implizit in der Signatur von myMethod markieren, da Foos nicht implizit im Kontext ist die myMethod verwendet werden. Meine Frage: Gibt es einen eher idiomatischen (oder prägnanten) Weg, diesen Effekt zu erreichen, als eine temporäre Variable zu verwenden?
In diesem einfachen Beispiel ist es wahrscheinlich einfacher, "f" explizit zu übergeben, anstatt implicits zu verwenden - aber ich gehe davon aus, dass Ihr realer Code komplex genug ist, um das Implizite sinnvoll zu machen. In diesem Fall denke ich, dass Ihre Lösung, innerhalb der Methode ein "implizites val" zu deklarieren, der beste Weg ist, dies zu tun, wenn Sie vermeiden wollen, dass der Parameter selbst als implizit in der Methodensignatur deklariert wird. – DaoWen
@DaoWen Sie sollten wirklich Ihren Kommentar als Antwort einreichen. –
@Aaron Novstrup - Yeah, schau auf die anderen Antworten, die ich wahrscheinlich haben sollte. Ich bin immer noch ziemlich neu hier, also fällt es mir immer noch schwer zu entscheiden, was in die Kategorie Antwort/Kommentar fällt. – DaoWen