Ruby の基礎(メソッド、クラス)

Ruby のメソッドとクラスについてです。

メソッド

メソッドの記述は def method_name からはじまり、end でブロックを終了する。

def sing
    puts "lalala~"
end

sing()

これを実行すると、プロンプト上に lalala~ と表示される。引数をとる場合、

def sing(word) # 引数をとる
    puts word + word + word + "~"
end

sing("hu")

のように書いたり、また初期値を設定したい場合は、

def sing(word = "la") # 初期値を与える
    puts word + word + word + "~"
end

sing()

のように書くこともできる。引数を複数わたして繰り返し処理を行ったり、

def sing(word = "la", num)
    for i in 1..num do
        print word
    end
    puts "~"
end

sing("fu", 10)

return でメソッドの呼び出し元に値を返すといったことも可能。

def sing(word = "la", num)
    s = ""
    for i in 1..num do
        s += word
    end
    s += "~"
    return s
end

puts sing(3)

クラス

クラスの記述は class Classname という書き方で始まる。Classname の最初の文字は大文字となる。

class Monster # クラスは英大文字からはじまる

    def initialize(name) # インスタンスされたときに最初に呼ばれる
        @name = name # インスタンス変数には @ をつける
        @hp = 100 + rand(100)
        printf("%s appeared. hp is %d\n", @name, @hp)
    end

    def damage
        @hp -= 10 + rand(10)
        printf("%s's hp is now %d\n", @name, @hp)
        printf("%s is now dead!\n", @name) if @hp < 0
    end

    def heal
        @hp += 10 + rand(10)
        printf("%s's hp is now %d\n", @name, @hp)
    end

end

slime = Monster.new("slime")
slime.damage
slime.heal

initialize() というメソッドが最初に呼ばれ、またインスタンス変数には、最初に @ をつける。クラスからオブジェクトを作成するときは、Classname.new() という書き方になる。