復帰文とブロックとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 復帰文とブロックの意味・解説 

復帰文とブロック

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

Smalltalk」の記事における「復帰文とブロック」の解説

Smalltalkブロック一種制御構文であるという性質上、復帰文が他の言語比べ極めて異質な振る舞いをする。 example| block |block := [ ^ 1 ].block value. "ブロック実行"^ 0. 上記メソッド登録したオブジェクトに#example セレクター使ったメッセージを送ると結果として何が返ってくるか。Smalltalk 以外の言語では 0 が返ってくるのが一般的であるが Smalltalk では 1 が返ってくる。Smalltalkブロック内の復帰文からでもメソッド自体抜けることができるようになっている。この例では、「block value.」を評価しblock 中の「^ 1.」で制御が戻ると example 自体中断して結果返す。そして example戻り値として block戻した 1 を戻すようになっている。 callee: aBlockaBlock value.^ 2. caller| block |block := [ ^ 1 ].self callee: block.^ 0. 上記の様なメソッドまたいでブロック評価する場合はどうなるだろうか、この場合Smalltalkexample戻り値として block戻り値である1を返すSmalltalkブロック内で復帰文が実行された際、ブロック生成地点呼び出し元までコンテキスト巻き戻すようになっている。この特性により Smalltalk では、#ifTrue:ifFalse: セレクター使った分岐メソッド中断したり #repeat セレクター等を使った反復処理復帰文だけで中断する事ができるようになっている。 exampleBlock^ [ ^ 1 ]. callee: aBlockaBlock value.^ 2. caller| block |block := self exampleBlock.self callee: block.^ 0. ただし、上記様にブロック生成したコンテキストと、ブロック評価する際のコンテキスト枝分かれする様な場合復帰文を実行する事はできない。この場合は BlockContext が例外出力し処理が停止してしまう。

※この「復帰文とブロック」の解説は、「Smalltalk」の解説の一部です。
「復帰文とブロック」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。

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



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

辞書ショートカット

すべての辞書の索引

「復帰文とブロック」の関連用語

1
2% |||||

復帰文とブロックのお隣キーワード
検索ランキング

   

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



復帰文とブロックのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS