1
コンパイラはすべての暗黙的な暗黙を推論するので、ステートフルな暗黙のパラメータを持つことは安全ですか?例えば:ステートフルな暗黙のパラメータ。それは安全ですか?
class TestImplct {
def test(implicit mc : MyClass) = println(mc.i)
}
class MyClass(val i : Int)
、その後はこの
implicit val mc = new MyClass(1234)
val ti = new TestImplct
ti.test
それが正常に動作しますが、それは安全であるか、多分ステートフル暗黙に関するいくつかの欠点があるので、それを使うのか?
あなたの例では、変更可能な状態がないので、あなたは安全です。状態が変更可能な場合、状況はおそらく異なるでしょう。つまり、「暗黙的」は、明示的に指定するのではなく、コンパイラにパラメータを提供させる方法に過ぎません。状態に関連するあらゆる欠点は、おそらく暗黙的なものよりも、変更可能性に関連しているでしょう。私が見ている唯一の問題は、暗黙的に、(MyClassに依存していることに気づいていない使用コードだけを読むことによって)いくつかの状態への依存をより曖昧にすることです。 –