説明することはあまりありませんが、その大部分を最後まで残します。
シンクコンテキストでマップをスローする方法を確認しようとしています。
--> Nil
ブロックの戻り値として追加すると、次のようになります。
(1..3).map: -> $_ --> Nil { Sunk.new( :titanic($_) ) }
for
ループが効果的に作成されたすべてのシンク、map
しません。
デフォルトでは、ブロックは以下で実行されます:
コードはmap
呼び出しのこのデフォルトを変更しなかったため、ブロックの最後のステートメント(その唯一のステートメント)はシンクコンテキストにありませんでした。(--> Nil
ブロックの署名に追加すると、最後のステートメントがシンクコンテキストに戻ります。)
このデフォルトスキームの例外には、ある種のステートメントキーワードが含まれます。for
これらの1つです。そのステートメントまたはブロックの最後のステートメントをシンクコンテキストに置きます。(への最後の文があるので、こと、それを元に戻すことはないシンク文脈で、あなたのような何かを書くことができます$ = do for ...
。)
ローストでのこのテストは、そのためのテストとして機能するはずです。そしてmap
、シンクのコンテキストでは効果的ですが、それがどのように「沈み込んで実行される」かはわかりません。それは単に実行されます。
対応するチケットとテストで混乱しています。申し訳ありませんが、私はそれを手伝うことはできません。
私はこの答えを準備するために何時間もの研究をしました。私が見つけて頼りにしたいくつかの作品が、私の簡単なメモとともに続きます。
次のリンクの多くは、IRCログの特定の行に移動します。それらのほとんどの私の意図は、各行に続くダイアログを少し読んで、そこから得られるものを最大化することです(それが混乱したとしても、次に説明するように、それが役立つかもしれないと思うので)。
少なくとも以下の概要を読み、いくつかのリンクをクリックすることを検討してから、この回答の下にコメントを投稿して、ここでさらにディスカッションを促し、より明確にすることができるかどうかを確認してください。