Groovy noobここでは、最初のGroovyの本を使っています。
” final
フィールドを定義するのではなく、読み取り専用のプロパティを定義しています。インスタンス内からプロパティを変更することができますクラスを定義するメソッドですが、外部からは取得できません
“
ここに問題のコードはありますが、
はコンストラクタの外で最終フィールド 'miles'を変更できません。
コード:
class Car
{
final miles = 0
def getMiles()
{
println "getMiles called"
miles
}
def drive(dist){if (dist>0) miles += dist }
}
この本では、ドライブ
インスタンスメソッド内から miles
を変更できる必要があると私は間違っていますか?
ベストアンサー
私は彼らが何を意味したと思うか(あなたが言いたいことを言っているかどうか分からない)というのは、定義されたセッターメソッドがないということです。クラス外から変更することはできません。
しかし、 はまだ final
のプロパティです。つまり、コンストラクタや宣言時に一度変更することはできません。
つまり、次の2つの問題を参照してください: 1628 、 2752
のように、より多くの探索が必要かもしれませんが、これはローカルのスクリプトプロパティに限られています。
My guess is you’re using a 1.7+ Groovy, while the book targets
<= 1.6.
こちらのご質問もご覧ください。