[過去ログ] スレ立てるまでもない質問はここで 161匹目 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
181
(3): 138 2022/09/24(土)22:26 ID:L5pk3riv(1) AAS
Ruby でファイルのトップレベルでも、do〜end, { } を使える。
以下は両方とも、[2, 3] と出力される

VSCode の拡張機能・Code Runner で、
選択したコード片を右クリックメニューから実行する

ary = [ 1, 2 ]

p res_1 = ary.map { |num| num + 1 }

res_2 = ary.map do |num| num + 1; end
p res_2
182
(2): 2022/09/25(日)01:00 ID:7iyOFwBx(1) AAS
>>181
Rubyだけ特異な表記
ラムダ式(やクロージャや無名関数など)に対して多くの言語はその引数は中括弧ブロックの外に来る

例えばJavaScriptだと
let arr = [1, 2];
let res1 = arr.map(num => num + 1);
let res2 = arr.map(num => {
 return num + 1;
});

例えばRustだと
let arr = [1, 2];
let res1 = arr.map(|num| num + 1);
let res2 = arr.map(|num| {
 num + 1
});

このように全く異なるプログラミング言語でもほぼ同じ表記になる

mapはあくまでも関数だから丸括弧を取る
そしてmap関数の引数としてラムダ式(やクロージャや無名関数など)が来る
そして波括弧はそのラムダ式(やクロージャや無名関数など)の中身が複数行(今回の例のように1行でも可)の時にブロックとして用いる

特異な表記をしたり特異な解釈をするRubyは学習しない方がよいかもしれない
195: 138 2022/09/25(日)23:24 ID:EaCGv7B5(1) AAS
>>181
Ruby では、Enumerable モジュールの戻り値は、
ブロックの有無によって、2種類ある

map { |item| ... } -> [object]
map -> Enumerator

ブロックを渡さない場合は、Enumerator を返して、
外部イタレータとして扱える
199
(1): 2022/09/26(月)10:54 ID:NmZ8KQlQ(1) AAS
>>181
Rubyの場合、{} は、{ key => value } みたいな、Hashと解釈されて
しまうから、何にも無い場所ではブロックとしては使えないんじゃなかったっけ。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.031s