[過去ログ]
次世代言語11[Rust Swift TypeScript Dart] (1002レス)
次世代言語11[Rust Swift TypeScript Dart] http://mevius.5ch.net/test/read.cgi/tech/1528037607/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
938: 844 [sage] 2018/07/03(火) 01:06:30.72 ID:LtnxPY8P Ruby では、break, return、例外も、単一の同じ仕組みを使っている。 コールスタックをさかのぼるポインタ。 つまり、どこから呼ばれて、どこへ戻るか breakは、1つ外側のスコープへ戻る。 returnは、最も外側のスコープを抜ける (レキシカル)スコープチェーンと、コールスタックの2大柱。 実装系・VM を作るには、この本がおすすめ Rubyのしくみ、2014 Rubyの実装系、Ruby1.9のRuby仮想マシンの内部の仕組み http://mevius.5ch.net/test/read.cgi/tech/1528037607/938
948: 857 [sage] 2018/07/03(火) 09:12:56.01 ID:0xlHwX4q >>937 いや、next はともかく、 break は lexical scope の範囲内では実装出来ないんだよ。 break が for や while でキャッチされる特殊な例外扱いならば、こんなおかしな事にならず、Proc 内でも break 使える様に出来たのに。 >>938 ここでいっているスコープは、 dynamic scope であることに注意ね。 内部イテレータでは、本来 break は例外と同じ方法でしか実装出来ない事を理解いただいて何よりです。 でも、ruby では、 Proc で break 呼び出したときの例外が LocalJumpError になっていて、どういう扱いにしたいかよく分からないんだよね。 for, while 内の break との整合も取れないし まあ、次世代言語の話じゃないんで、そろそろ突っ込みは止めときます。 http://mevius.5ch.net/test/read.cgi/tech/1528037607/948
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.041s