2017-12-13 18 views
-1

ブロック{}Blockクラスに分類されていますか?ブロッククラスとして分類されているルビのブロックはありますか?

私のメソッドはブロックを受け取り、これらのオブジェクトが分類されている特定の引数に反応する必要があります。

コードブロックであることを確認するにはどうすればよいですか?

{}.is_a? Block 

は、trueと等しくない。

+5

[ 'カーネル#1 block_given?'](https://ruby-doc.org/core-2.4.1/Kernel.html#method-i-block_given-3F )? –

+0

'Block'クラスとは何ですか?そのドキュメントはどこにありますか? – sawa

+1

'{}'はブロックではなく、ハッシュです。 – sawa

答えて

3

確かにありません。ブロックはオブジェクトでもありません。

+0

このステートメントは確かに真実ですが、答えとしてはほとんど当てはまりません;-) – Stefan

+1

質問はイエスな質問でした。そのような質問に対しては満足のいく回答をするのは難しいです。 – sawa

0

ブロックはProcオブジェクトだと思います。

def some_method(&some_block) 
    puts some_block.class 
    puts some_block.is_a? Proc  
end 

some_method { } 

プリント

Proc 
true 
+2

_ "私はブロックがProcオブジェクトだと思う" _ - それほどではない。 procは明示的なブロック引数のために作成されます。 '&some_block'がなければ、procは作成されません。 – Stefan

関連する問題