なぜスカラREPLでは、同じ名前の複数の関数を別の関数内に持つことができませんか?メソッドが2回定義されています
def wrapper(): Unit = {
def a: Unit = ???
def a(i: Int): Unit = ???
}
error: method a is defined twice
conflicting symbols both originated in file '< console>'
なぜスカラREPLでは、同じ名前の複数の関数を別の関数内に持つことができませんか?メソッドが2回定義されています
def wrapper(): Unit = {
def a: Unit = ???
def a(i: Int): Unit = ???
}
error: method a is defined twice
conflicting symbols both originated in file '< console>'
あなたはそのためのプリミティブの適切なOOPではありません、それはビューのOOPポイントからresonableに見えるされていない(と私は、コンパイラに同意する)どのようなメソッド内(OOP機能を)オーバーロードを使用したいように見えます。これをOOP機能に合わせるには、オブジェクトにラップしてください:
def wrapper(): Unit = {
object wr {
def a: Unit = ???
def a(i: Int): Unit = ???
}
wr.a(10)
wr.a
}
良いアイデア、また私はインポートwr._を追加し、ちょうど(10) – Ivan
これはやや恣意的ですが、一般的な判断です。あなたがこれを行うと、デバッグが難しくなることが分かります(それがなぜ必要なのか想像するのは難しいです)。 – Alec
私の関数は次のようなものです。getBirthDates(userData:UserData){ isValid(month:String)= month.matches(regexp)&& isValid(month.toInt) isValid(month:Int)= month> 0 && month <= 12 ... }そして、私はそれらをオブジェクトのプライベートメソッドとして移動しました。 しかし、実際に私は2年間スカラでコーディングしていましたが、これまでにこの問題を発見したことはなかったので、まれな状況です。 – Ivan
これはREPLでのみ、またはいつものようにソースコードをコンパイルするときにも起こりますか? – stefanobaghino