Ruby における関数オブジェクトとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > Ruby における関数オブジェクトの意味・解説 

Ruby における関数オブジェクト

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/03 01:18 UTC 版)

関数オブジェクト」の記事における「Ruby における関数オブジェクト」の解説

Ruby では、便宜上 Object クラスのローカルインスタンスメソッドを「グローバル関数」と呼んでいるといった例外はあるが、関数存在せず全てメソッドである。メソッドオブジェクトではなく変数メソッド名前空間が違う。 Ruby には、メソッドの他に手続き表現としてブロックがある。Rubyブロックは、メソッド呼び出しオプショナル付加できるもので、暗黙引数といったような感じ呼び出されるメソッド渡されるブロックかクロージャ作られ呼び出され側からyield という特殊なグローバル関数により、そのクロージャを呼ぶことができる。 ブロック直接にはオブジェクトではない。しかし、メソッド定義の仮引数記述最後に、&foo のように & を先頭に付け引数付けるなどすることで、簡単に Proc オブジェクトとして得ることができる。また、メソッド呼び出し最後実引数として、引数前に & を付けることで、Proc オブジェクトブロック代わりに渡すこともできる。Proc オブジェクトの手続きcall というインスタンスメソッドにより呼ぶことができる。 Proc オブジェクト文脈という環境を持つ関数オブジェクト状のものである。これに対しレシーバ( foo.bar() のようにメソッド呼び出す時、foo の指すオブジェクトレシーバと言う)という環境を持つ関数オブジェクト状のものが Method オブジェクトである。Method オブジェクトメソッドそのものではなくリフレクションなどのためのオブジェクトであり、感じとしては java.lang.reflect.Method に似ている。UnboundMethod はレシーバ切り離されMethod であり、実行するためにはまずレシーバbind して Method にしなければならないRuby Extensions Project は、シンプルなハック開発したclass Symbol def to_proc proc { |obj, *args| obj.send(self, *args) } endend Symbolこのような to_proc メソッドがあれば、foo メソッド呼び出すような Proc オブジェクトが、:foo.to_proc というコード得られる。& が付けられ実引数前述)が、Proc オブジェクトない場合は、to_proc メソッド呼ばれるというコントラクトになっているので(ダックタイピング。これは前からそうなっていた)、たとえば配列要素合計を得る、というコードが [2, 3, 5, 7].inject :+ のように簡潔に書ける。Symbol#to_proc は、RubyKaigi 2006 の期間中2006年6月11日正式に Ruby追加された。 また、Ruby においてファンクタという名前があるものとして、Ruby Facets プロジェクトによって導入され委譲実装がある。委譲の最も基本的な定義下記のようなのである: class Functor def initialize(&func) @func = func end def method_missing(op, *args, &blk) @func.call(op, *args, &blk) endend

※この「Ruby における関数オブジェクト」の解説は、「関数オブジェクト」の解説の一部です。
「Ruby における関数オブジェクト」を含む「関数オブジェクト」の記事については、「関数オブジェクト」の概要を参照ください。

ウィキペディア小見出し辞書の「Ruby における関数オブジェクト」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Ruby における関数オブジェクト」の関連用語

Ruby における関数オブジェクトのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Ruby における関数オブジェクトのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの関数オブジェクト (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS