-5

私は1つの引数を持つメソッド宣言を持っています:

def my_method(argum)
   if argum.empty?
      puts "argument is empty"
   else 
      puts "argument is not empty"
   end
end

このメソッドを呼び出して、次のようにシンボルを渡すと、引数が空ではないmy_method(:aleatoir_symbol)ことが示され、このようにリテラルシンボルを渡すと、引数が空であることが示されますmy_method(:"")

私もirbでテストし、これが結果です:

:a_symbol.empty?
 => false
 :"".empty?
 => true

私の質問は、:any_symbolのようなシンボルを渡すと、引数が空ではないことを示しているのはなぜですか??

私は検索していて、ここで同様の質問を見つけましたが、理由を明確に理解していない回答が1つだけあります。明確な答えは役に立ちます。ありがとう

** アップデート **


これが私の元の質問です。適切な答えがないため、この質問を開きます

4

1 に答える 1

2

Symbol#emptyは基本的にself.to_s.empty?(selfシンボルである) として定義されます。

なぜ あなたの質問に答えるに:"".empty?true:それは:"".to_s(空の文字列)が空だからです。

あなたのコメントに対処するには::any_symbol.empty?です。それは同じことです。探している方法ではないかもしれません。多分私はあなたが求めているものを手に入れませんでした。false:any_symbol.to_s.empty?falseempty?

于 2013-07-25T12:06:19.573 に答える