14
def doSomething(value)
    if (value.is_a?(Integer))
        print value * 2
    else
        print "Error: Expected integer value"
        exit
    end
end

Ruby メソッドに、特定のパラメーターが整数でなければならないことを伝えることはできますか? そうしないとクラッシュします? Javaのように。

4

5 に答える 5

18

いいえ、できません。すでに行っていることしかできません。自分でタイプを確認してください。

于 2013-01-29T04:19:42.603 に答える
10

私はパーティーに遅れましたが、何か他のものを追加したかったのです:

Ruby で本当に重要な概念はDuck Typingです。この原則の背後にある考え方は、変数を使ってやりたいことを実行できる限り、変数の型はあまり気にしないということです。メソッドで必要なのは、(*) に応答する変数を受け入れることです。インスタンスが乗算できる限り、クラス名は気にしません。

#responds_to?そのため、Ruby ではメソッドよりもメソッドをよく見かけます。#is_a?

一般に、ユーザー入力などの外部ソースから値を受け入れる場合にのみ型アサーションを行います。

于 2016-10-21T01:17:18.210 に答える
2

必要に応じて、いつでも任意に例外を発生させることができます。

def doSomething(value)
    if (value.is_a?(Integer))
        print value * 2
    else
        raise "Expected integer value"
    end
end

本当にやりたいかどうかは別問題です。:)

于 2013-01-29T08:31:32.843 に答える