こんにちは私はScalaの初心者ですこのコードを実行しようとしています:
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
しかし、次のエラーが発生します:solution.scala:12:エラー:パラメータータイプ番号がありません=>番号+1これを修正する方法がわかりません。
こんにちは私はScalaの初心者ですこのコードを実行しようとしています:
class Number(x : Int){
var number = x
def inc(): Int = {
number => number + 1
}
}
しかし、次のエラーが発生します:solution.scala:12:エラー:パラメータータイプ番号がありません=>番号+1これを修正する方法がわかりません。
基本的に、期待するタイプを明示的に言うことができます。
def inc(): Int = {
number: Int => number + 1
}
しかし、これはコンパイルされません。定義したものが関数であるため、次のようになります。
def inc(): (Int) => Int = {
// some function that takes Int, calls it `number` and increment
number: Int => number + 1
}
もっと近いでしょうが、
意味がなく、定義した数値がクラス内の変数と共通点がないことに気づきません。これが
、 Scala コンパイラが型を推測できない理由です。number
あなたは次のようなものを書きたかったと思います:
def inc(): Int = {number += 1; number;}
// will take effect on number field
また
def inc(num: Int): Int = num + 1
または単に:
def inc = (x: Int) => x + 1
Int の戻り値の型が推測されるため、指定する必要はありません
問題の可変性の扱いに関しては、inc(1)、inc(5) などは、それ自体がクラス インスタンスに渡された数値の変換された表現です (つまり、それらは「var 数値」と同等ですが、不変的にそうです)。ここで見たものに基づいて、可変性は本当に必要ありません...