Scala wydaje się zachowywać jak Java, jeśli chodzi o magicznej przemiany prymitywów:Jak wyłączyć wszystkie niejawne konwersje typów pierwotnych?
val a: Int = 1
val b: Double = 2.3
println(a + b) // 3.3
println(Math.max(a, b)) // 2.3
Częściej niż nie, to był źródłem błędów w kodzie. Czy istnieje sposób, aby wyłączyć te niejawne konwersje, aby mój przykład dał ostrzeżenie/błąd kompilacji? Naprawdę wolałbym napisać
print(a.toDouble + b)
println(Math.max(a.toDouble, b))
za każdym razem, gdy potrzebuję takich konwersji.
Możesz także chcieć wyłączyć opcję '-Yno-predef' dla niektórych implicite. Bardziej ogólnie, zobacz http://tpolecat.github.io/2014/04/11/scalac-flags.html – lmm
Dziękuję wam obu. Ten artykuł na temat flag-skalaków jest złoty <3 – OlivierBlanvillain