#変数、定数いろいろ
- ローカル変数
- アルファベット小文字または`_'で始まる識別子
- グローバル変数
- $で始まり、宣言が必要なく、プログラムのどこからでも参照できる。
- 初期化されていないグローバル変数を参照した場合、値はnil。
- インスタンス変数
- @で始まり、特定の オブジェクトに属する。
- そのクラスま たはサブクラスのメソッドから参照できます。
- 初期化されていないインスタンス変数を参照した場合、値はnil。
- クラス変数
- @@で始まり、クラス定義 の中で定義される
- クラスの特異メソッド、インスタンスメソッドなどから参照/代入ができる。
- 定数
- アルファベット大文字で始まる。
- 他の言語では『定数』なので、再定義しようとしても、警告が出て、再定義できない。
- Rubyでは、再定義しようとすると、警告が出るが、再定義できてしまう。
#superメソッド
親クラスのメソッドを呼び出す
class User
attr_accessor:say
def initialize
@say = "Hello"
end
end
class Oriver < User
def initialize
super
end
end
oriver = User.new
puts oriver.say
#実行結果:Hello
#この時、superメソッドは親クラスのUserから、@sayを呼び出している
#attr_accerssor(attr_readerとattr_writer)
- attr_accerssorはゲッターとセッターの機能があるアクセスメソッド
- インスタンス変数の値はクラス内からしか取得出来ない。
- クラス外からインスタンス変数を取得更新するには、ゲッター、セッターが必要
- ProgateのPHPの方なら説明がちゃんとあった。
#include (モジュール名, モジュール名, ...)
クラスやモジュールに、他のモジュールをインクルードする。
引数にはモジュールを指定し、上の様に複数指定することができる
##Math module
浮動小数点演算をサポートするモジュール.
円の面積
include Math
#円の面積
def area r
return r * r * PI
end
#球の体積
def volume r
return (4/3) * r * r * r * PI
end
#πの値
puts PI #結果:3.141592653589793
area(2) #結果:12.566370614359172
volume (2) : 25.132741228718345
これは便利。