[過去ログ] 次世代言語11[Rust Swift TypeScript Dart] (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
849: デフォルトの名無しさん [] 2018/07/01(日) 02:11:27 ID:FQlsc9Xo(1/5) AAS
>>848
848(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
>>852
852(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
891(2): デフォルトの名無しさん [sage] 2018/07/01(日) 17:49:59.60 ID:5prQoZWD(8/8) AAS
>>883
Smalltalkを知っている != Smalltalk信者
ちゃんとお薬のんでる?
勝手にやめちゃいけないよ?
なあ、smalltalk と ruby に詳しいんだったら、意味の無い罵倒を止めて、 >>869
869(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
900(1): デフォルトの名無しさん [sage] 2018/07/01(日) 20:01:01.72 ID:gbNzWOju(4/4) AAS
>>897
pythonやrubyで型を宣言させる話だったな
型を宣言すれば次世代に行けるらしい
かといって、スレタイの TypeScript だって、 Python + 型チェック とあんまり変わらなくないか?

#まあ、TypeScript は次世代じゃないという主張はありだけど
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s