Поскольку все имплициты выводятся компилятором, безопасно ли иметь неявные параметры состояния? Например:Сглаженные неявные параметры. Это безопасно?
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
он прекрасно работает, но так ли это безопасно или, может быть, есть некоторые недостатки, о сохраняющем состоянии implicits?
В вашем примере у вас нет какого-либо изменчивого состояния, поэтому, я думаю, вы в безопасности. Вещи, вероятно, были бы разными, если бы государство было изменчивым. Сказав это, «неявный» - это просто способ заставить компилятор предоставить вам параметр, а не явно указывать его. Любые связанные с государством недостатки, вероятно, будут больше связаны с изменчивостью, чем с имплицитом. Единственная проблема, которую я вижу, заключается в том, что неявное делает зависимость от некоторого состояния более неясной (читая только код использования, который вы не знаете, что это зависит от MyClass). –