[はじめようApache Groovy] #03 - Groovyの変数と定数、オブジェクト

こんにちは!なるーらぼです。前回ははじめてのGroovyスクリプトを書いてみましたね。

今回から何回かにわたって、基本的な文法をお話ししていきます。今回は変数についてです。


変数

Groovyにおいて、スクリプトについては変数はRubyやPythonなどと同様にデータへラベル付けするだけで宣言することができます。

aaa = 1

上記で変数「aaa」は数値の1が代入されました。このほかにもGroovyではJavaのように型を指定して宣言することができます。

int aaa = 1

Javaのプリミティブ型はすべて使うことができますが、いずれもオブジェクトでラッピングされています。ですから実際にはプリミティブ型というよりオブジェクトということになります。でも…そうなるとRubyなどのような気軽な感じがなくて嫌だ!という方のために、型を明示することなく宣言することもできます。このときには「def」というキーワードを使うことになります。

def aaa = 1

この場合、変数「aaa」はどの型でもよいということになります。


定数をつくるには

Rubyにはすべて大文字で宣言した変数について、定数のように扱うことができます。また、Pythonについては定数というものがありませんので、自前で疑似的に実現するしかありません。一方、GroovyではJavaのように修飾子の「final」キーワードを使うことができますが…

final aaa = 2
aaa = 1

上記のコードでは変数「aaa」の内容を出力すると1に変化してしまいます。

変更されないようにするにはクラスに入れて読み取り専用とするしかありません

class Data{
 static final int aaa = 2
}

Data.aaa = 1

上記のコードでは1を代入した時点でエラーになります。


オブジェクトとは

Groovyにおいて、たいていのものはオブジェクトです。オブジェクトはクラスという型を定義する仕組みにおいて、その型を実際にメモリ内へ呼び込んだものを指します。

このオブジェクトには性質を持った「プロパティ」、そしてオブジェクトがどのように動くのかということを表した「メソッド」があります。そのほか、オブジェクトの内部には外側からはアクセスすることができない「フィールド」というものもあります。これらをすべて含めて「メンバー」と呼びます。この辺りはJavaと大きな違いはありません。RubyやPythonなどとも大きな違いはないでしょう。


今回のサンプルで登場したint型の変数「aaa」は数値「java.lang.Integer」のオブジェクトです。ですから、クラスで定義されたプロパティやメソッドを利用することができます。次のテキストも「java.lang.String」のオブジェクトです。よってRubyなどのように文字列長を取り出すためのLengthメソッドを直接呼び出すことができます。

"hello".length()

Groovyでもオブジェクトを操作して問題解決をしていくようになります。


最後に

今回は変数、定数、そしてオブジェクトについてみてきました。深く話をすればもっともっとあるのですが、ひとまず入門するだけであればこの程度でも問題ありません。

次回は最もよく使うであろう数値オブジェクトについてお話ししていきます。

もんが(なるーらぼ)

個人でプログラミングの学習サイト「なるーらぼ」を運営しています。
https://nalu-labo.amebaownd.com
PowerShell入門の電子書籍2冊も出版しています。
http://www.amazon.co.jp/dp/B017LJOCJ2

なるーらぼ

ごく自然にプログラミングを楽しむことができる世界をつくるお手伝いをしています

0コメント

  • 1000 / 1000