[過去ログ] 次世代言語11[Rust Swift TypeScript Dart] (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
849: デフォルトの名無しさん [] 2018/07/01(日) 02:11:27 ID:FQlsc9Xo(1/5) AAS
>>848848(1): 844 [sage] 2018/07/01(日) 02:00:27 ID:YZ+qvhoO(1/2) AAS
クロージャは、クロージャの外側の環境をつかんでいる。
つまり、クロージャを囲む関数内の変数をつかんでいる
だから、クロージャ内でreturn すれば、外側の関数も抜けて、
関数内の変数なども、解放した方が良いと考えた
Groovy の挙動とは違うかも
return だけだったら納得できるんだが、next や break の扱いがぐちゃぐちゃなのはどう説明するの?
857(8): デフォルトの名無しさん [] 2018/07/01(日) 09:23:49.76 ID:FQlsc9Xo(2/5) AAS
>>852852(2): 844 [sage] 2018/07/01(日) 08:32:31.95 ID:YZ+qvhoO(2/2) AAS
クロージャ(block)内のbreak は、クロージャを抜けるだけで、外側の関数は抜けない。
関数の最後まで実行される
クロージャ内のnext は、次の繰り返しに進むだけで、クロージャも抜けない。
クロージャの最後まで実行される
def f
num = 0
(0..5).each do |i|
num = i
break if i == 3
end
puts num
end
f() #=> 3
あなたが closure だからと主張する、block は 952の挙動だが Proc では break は例外吐くらしいけど何で?
# 言っちゃ悪いが、closure は定義した時点での環境を基準に動作が普通だと思うんで、
# ループ外で定義されているならば next/break は一律例外吐くで無いと一貫性がないようにしか見えん。
858: デフォルトの名無しさん [] 2018/07/01(日) 09:24:49.31 ID:FQlsc9Xo(3/5) AAS
>>857
すまん、「block は >>852の挙動」だな。
892: 857 [sage] 2018/07/01(日) 18:07:48.02 ID:FQlsc9Xo(4/5) AAS
>>891なあ、smalltalk と ruby に詳しいんだったら、意味の無い罵倒を止めて、 >>869869(2): 857 [] 2018/07/01(日) 11:25:18.69 ID:usR85dqh(1) AAS
>>867
smalltalkには break や continue (next) はないだろう?
ruby のは、closure に break や next を持ち込んでおかしくなっているように見えるよ。
の答えてくれない?
901: 857 [sage] 2018/07/01(日) 21:20:45.24 ID:FQlsc9Xo(5/5) AAS
>>900かといって、スレタイの TypeScript だって、 Python + 型チェック とあんまり変わらなくないか?
#まあ、TypeScript は次世代じゃないという主張はありだけど
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s