2016-11-03 1 views
0

私は '&'が以下のコードでどのように機能するのか把握しようとしていますか?レールに '&'とは何ですか?

:それは概ね意味する頻繁&:表記が表示されます

subscriptions.find { |x| x.active } 

:活性は、それがために短い形態である、:active.to_procを表し、この場合、単に文字列

def current_subscription 
subscriptions.find(&:active) 
end 

答えて

0

ありますmsgstr "指定されたオブジェクトの名前を持つメソッドを呼び出す"。

覚えていること:activeは、文字列ではなく、Symbolまたは「internalized」文字列です。違いは微妙ですが、Rubyの基本です。シンボルは一度しか存在せず、Rubyでは一度しか存在しません。文字列はすべて同じですが、文字列は複製できますが、同等です。実際には、文字列を格納するメモリが増え、比較のための努力が増えています。これは、ハッシュでシンボルが頻繁に表示され、メソッドの引数として頻繁に表示されます。

+0

ありがとうございました。他の参考文献は本当に助けになるでしょう。 – Richie

0

だけで改行を削除します。それは、ブロックに来るとき

cats.each do |cat| cat.name end 

注意を、二つの異なるコーディングスタイルがあります。 1つのコーディングスタイルでは、複数の行にまたがるブロックに対して常にdo/endを使用し、1行ブロックには常に{/}を使用します。あなたがその学校に従うならば、あなたは

cats.each {|cat| cat.name } 

を書く必要があり、他のスタイルは常に、主に彼らのリターンのために実行されたブロックのために、主にその副作用のために実行されたブロックのために/終了と{/}を行う使用することです値。それぞれがブロックの戻り値を投げ捨てるので、ブロックをその副作用に渡すのは理にかなっているので、その学校に従うならdo/endで書くべきです。

cats.each(&:name) 
関連する問題