初めての Ruby

クラスを作ってみた!

おお!typo もしなかったし、ヨサゲだ:)
initialize はなくていいらしい

class Human
end
amachang = Human.new
p amachang
#<Human:0x100f69d8>

コンストラクタ!

なんなくオッケー!

class Human
    def initialize
        p 'ogya-!(ubugoe)'
    end
end
amachang = Human.new
"ogya-!(ubugoe)"

プロパティ!(フィールド?)Ruby ではなんていうの?(後記:インスタンス変数という)

でも、どうやってインスタンスの外からインスタンス変数にアクセスするんだろう??

class Human
    def initialize(name)
        @name = name;
    end
    def say_name
        p @name
    end
end
amachang = Human.new('amachang')
amachang.say_name
"amachang"

こうすると?・・・・nilなんだ!

class Human
    def initialize(name)
        @name = name;
    end
    def say_name
        p @name
    end
end
amachang = Human.allocate
amachang.say_name
nil

うーん。まだまだ気になる点が・・・

仮引数と実引数が合わない場合は?・・・・エラー!?まじですか

class Human
    def initialize(name)
        @name = name;
    end
    def say_name
        p @name
    end
end
amachang = Human.new
amachang.say_name
-:9:in `initialize': wrong number of arguments (0 for 1) (ArgumentError)
        from -:9

こうするのか・・・でも、なんで else には then がないんだ!?

class Human
    def initialize(*name)
        if(name[0]) then
            @name = name[0];
        else
            @name = 'no name'
        end
    end
    def say_name
        p @name
    end
end
amachang = Human.new
amachang.say_name
"no name"