54

Python にはpass、空の関数、条件、ループを定義するためのキーワードがあります... Ruby に似たようなものはありますか?

Python の例:

def some_function():
    # do nothing
    pass
4

6 に答える 6

61

いいえ、Ruby にはそのようなものはありません。空のブロック、メソッド、モジュール、クラスなどが必要な場合は、空のブロックを記述します。

def some_method
end

それでおしまい。

Python では、すべてのブロックに少なくとも1 つのステートメントを含める必要があるため、"偽の" no-op ステートメントが必要です。Ruby にはステートメントがなく式だけがあり、ブロックに式が含まれていないことは完全に合法です。

于 2012-11-19T11:37:07.347 に答える
16

常にendステートメントがあるため、pass必要ありません。

ルビーの例:

def some_function()
    # do nothing
end

ルビー3.0

Ruby 3.0 の時点で、いわゆる「endより少ない」メソッド定義がサポートさendれるようになりました。すべてのメソッド定義でステートメントを必要としなくなりました。これは、上記の例のような空のメソッドを表現する最も簡潔な方法は、間違いなく次のようなものであることを意味します。

def some_function = nil

あるいは、非常に嫌われているセミコロンを使用した、より醜い 1 行のオプションが常にありました。

def some_function; end

これは、コードの記述方法を除いて、最初のソリューションについて実際には何も変更しないことに注意してください。

于 2012-11-19T11:14:51.953 に答える
0

任意の数の引数で自由に使用できるようにしたい場合は、引数に小さなトリックが必要です。

def gobble *args, ≺ end
于 2012-11-19T16:53:23.390 に答える