読者です 読者をやめる 読者になる 読者になる

Masa / Lino Blog

Masanori Satoh ( Masa / Lino ) の徒然ブログです

メソッドのオーバーロード

Rubyは型宣言がないため、メソッドオーバーロードは引数の個数と引数に対するデフォルト値で行う。

def hello(name="Lino")
  name
end

p hello #=> "Lino"
p hello("Ruby") #=> "Ruby"

かなりコード量が少ない。

Javaではこんな感じ。

package lino;

public class OrverLoader {
    static String getName(){
        return "Lino";
    }
    
    static String getName(String name){
        return name;
    }
    
    public static void main(String args[]){
        System.out.println(getName());
        System.out.println(getName("Java"));
    }
}

Javaみたいにメソッドの引数の型による処理の振り分けができない。
わかりやすいけど、コード量が増える。


Rubyは引数の型がわからなくても処理できるから、うまくデータ構造を作ればメソッド内部で型をチェックしなくても同じ処理が可能。
やっぱり一長一短かな。


ちなみにRubyはいろいろなものが省略できる。

さくっと書くのに適してるかな。