0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubyにおける予期しない型の問題(Javaと比較)

Posted at

予期しない型の問題は、特に動的型付け言語でよく見られます。Rubyの例を使って、このような問題を示します。

Rubyにおける予期しない型の問題

Rubyでは、変数の型が実行時まで決定されないため、予期しない型の値が渡されると、エラーが発生するか、または意図しない振る舞いが起こり得ます。

# Ruby の例
def multiply(a, b)
  a * b
end

puts multiply(5, 3)    # 期待通りの乗算: 出力は 15
puts multiply("5", 3)  # 文字列の繰り返し: 出力は "555"

上記の例では、multiply メソッドは2つの引数を乗算します。最初の呼び出しでは、両方の引数が整数なので、期待通りの乗算結果が得られます。しかし、二番目の呼び出しでは、一方の引数が文字列であるため、Rubyは文字列を繰り返す動作をします。この挙動は意図していない可能性があり、バグの原因になりえます。

静的型付け言語での対応

対照的に、静的型付け言語ではこのような問題が発生しにくいです。Javaで同じ関数を書くと、型の不一致によりコンパイルエラーが発生します。

// Java の例
public class Example {
    public static int multiply(int a, int b) {
        return a * b;
    }

    public static void main(String[] args) {
        System.out.println(multiply(5, 3)); // 整数の乗算: 出力は 15
        // System.out.println(multiply("5", 3)); // コンパイルエラー
    }
}

このJavaの例では、multiply メソッドは整数のみを引数として受け入れるため、文字列を渡そうとするとコンパイル時にエラーになります。これにより、実行前に問題を発見しやすくなります。

結論

動的型付け言語では、実行時に異なる型が渡されることによる予期しない動作やエラーが発生しやすいです。これに対して、静的型付け言語ではコンパイル時に型のチェックが行われるため、この種の問題を未然に防ぐことができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?