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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
165
(5): 2021/03/10(水)02:43 ID:hr2yGgcj(2/6) AAS
JavaScript でよくある。
0, 1, 2以上で、型が変わるので統一的に書けないとか

0 ならnil を返して、1 なら単数形を返して、
2以上ならコレクションを返すみたいな、バラバラなAPI を作っている

それを統一的に書けるのが、jQuery。
jQueryオブジェクトに変換すれば、0でも空配列、1以上は配列になる

0以上で、すべてeach で書ける。
0なら何も実行されない
167
(1): 165 2021/03/10(水)13:53 ID:hr2yGgcj(3/6) AAS
>>165
に書いた

$_ は、パイプの前段から渡ってくるもの

パイプの前段が、nil なら、エラーになる。
nil.Name に、Name 属性はない

1つが返ってくると、単数型.Name。
2以上なら、配列.Name

nil, 単数型・複数型に、Name 属性があるかどうか、
3つの条件処理で分けないといけない
省12
168: 165 2021/03/10(水)13:58 ID:hr2yGgcj(4/6) AAS
一旦配列化して、each を使うと、
前段のパイプが、0のnil, 1の単数型・2以上の複数型と、どれを返しても正常に動く

jQueryオブジェクト、Ruby の1-liner と同じ原理

[ ].each
[ "a" ].each
[ "a", "b" ].each
169: 165 2021/03/10(水)14:06 ID:hr2yGgcj(5/6) AAS
[ ].each
[ "a" ].each
[ "a", "b" ].each

要素が0の場合は、処理なし。
要素が1の場合は、$_ に、a が渡ってくる

要素が2の場合は、1回目の$_ に、a が渡ってくる
2回目の$_ に、b が渡ってくる

だから一旦配列化して、each を使うと、
前段のパイプが、0のnil, 1の単数型・2以上の複数型と、どれを返しても正常に動く
170: 165 2021/03/10(水)14:21 ID:hr2yGgcj(6/6) AAS
例えば、JavaScript では、関数の戻り値が、

0個・該当無しの場合は、nil を返して、
1個の場合は、文字列を返して、
2個以上の場合は、配列を返すとか、

3つの型が異なる設計にしているから、
一々、3つの条件処理で分けないといけない

これが苦痛だから、jQuery オブジェクトが出来た。
0のnil, 1の単数型・2以上の複数型と、どれを返しても正常に動く

nilでも単数型でも、配列化してしまうので、each で処理できる
176: 165 2021/03/11(木)13:08 ID:EP88fPM9(1/2) AAS
大文字に変換する、Ruby の1-liner、
ls | ruby -ne 'print $_.upcase'

これが動く原理は、-e オプションで、
print $_.upcase を、暗黙の内にループで囲むから

ls | ForEach-Object { echo $_ }
も、たぶん同じ原理で、
ForEachで、ループで囲むか、イタレータ・配列化してる

これによって、前段が、次の3パターンの型のどれを返しても、エラーにならない。
該当なし0, nil
1つの単数型
省6
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.054s