okapies/effectivescala — comment on commit 8b448ef819e6d87d21fa78310b84fc72593b0226
File: effectivescala-ja.mo line 574
By eed3si9n:

「ネストした匿名クラス」ではなくて、「匿名関数」ですね。for 式が foreach/flatMap/map を呼び出す糖衣構文で、map の argument として匿名関数が自動的に生成されて渡されるので、return 式のようなものを書くと、通常意図している文脈から外れた意味になってしまうということだと思います。

「このコードは、`container`が計算を遅延させた場合、ランタイムエラーが発生させ return が非局所的(nonlocal)に評価されてしまうこともある!」と訳せますが、ちょっとこれだけだと意味が読み取れないかもしれないので、return 式が例外の throw で実装されいることを補足したほうがいいかもしれません。特に、yield と組み合わせると確かにコンテナによって return 文の挙動が変わるコードを書くことができました:

```scala
scala> def foo: Int = { for (i <- List(1, 2, 3)) yield { if (i == 2) return i; 0 }; -1 } // returns 2

scala> def foo: Int = { for (i <- List(1, 2, 3).view) yield { if (i == 2) return i; 0 }; -1 } // returns -1
```