23/02/14(火)22:26:08 初学者... のスレッド詳細
削除依頼やバグ報告は メールフォーム にお願いします。個人情報、名誉毀損、侵害等については積極的に削除しますので、 メールフォーム より該当URLをご連絡いただけると助かります。
画像ファイル名:1676381168442.png 23/02/14(火)22:26:08 No.1026621670
初学者です ラムダ式意味わかりません 解説を見て分かって気でいてもソースコードを見て出会うと意味がわからなくなります 意味がわかりません
1 23/02/14(火)22:27:22 No.1026622225
別に難しいところなんかなくね?
2 23/02/14(火)22:28:20 No.1026622648
javaだけどこの記事おすすめ https://www.bold.ne.jp/engineer-club/java-lambda-expression
3 23/02/14(火)22:30:16 No.1026623463
無理してやらなくてええ!
4 23/02/14(火)22:31:55 No.1026624210
function f(x){return x*x;} が f=(x)=>x*x; みたいになるやつ?
5 23/02/14(火)22:33:01 No.1026624673
慣れるとラムダの無い言語を使う気が失せるぞ
6 23/02/14(火)22:34:21 No.1026625211
LINQ使ってみたくなったときにでもちょっとずつ覚えればいいよ
7 23/02/14(火)22:35:05 No.1026625558
>ラムダ式 スタティックメンバで書くまでもないちょいとした処理を関数の中でやってもらうときに書くのん コールバック実行するときとかに便利なのん
8 23/02/14(火)22:36:17 No.1026626072
別に使わなくても書けるよ 便利だなと思ったら使えばいい
9 23/02/14(火)22:37:03 No.1026626416
名前が悪いと思う
10 23/02/14(火)22:37:54 No.1026626747
ラムダ式ってかインライン関数だよね 原義のラムダ式とはだいぶ違ってるとは聞いたことある
11 23/02/14(火)22:38:49 No.1026627141
ラムダ式わからないって人権喪失するぞ わからなくていいとか嘘だぞ
12 23/02/14(火)22:39:21 No.1026627352
出た…「人権」…
13 23/02/14(火)22:39:47 No.1026627541
無名関数は現代的な言語機能の代表格って感じだ
14 23/02/14(火)22:41:09 No.1026628132
数値や文字列みたいにどこでも定義して変数に入れて他の関数に渡したりできる(第一級オブジェクト)ようになった関数だぞ クロージャはまだ覚えなくていいぞ
15 23/02/14(火)22:41:23 No.1026628226
ただの処理を簡潔に記述するための構文だよ
16 23/02/14(火)22:42:07 No.1026628497
C#はそもデリゲートがあるから他の関数に渡せる云々は特記すべきことじゃない気はするけどね
17 23/02/14(火)22:42:12 No.1026628537
_いいよね…
18 23/02/14(火)22:42:39 No.1026628730
C#やってるならdelegateは使うだろう? あれをカンタンに書くためのものって理解でとりあえずいいよ
19 23/02/14(火)22:44:11 No.1026629362
別の言語回ってきた方がラムダ式の理解は早いかもしれん
20 23/02/14(火)22:44:32 No.1026629502
ラムダはジャバ男さんの悪いトコ切り捨てられなかった負の遺産だからな…おっぱいにも悪い
21 23/02/14(火)22:45:11 No.1026629762
>無名関数は現代的な言語機能の代表格って感じだ まあ世界で2番目くらいに古い言語からある機能ではあるが…
22 23/02/14(火)22:45:43 No.1026630012
いいよね可読性
23 23/02/14(火)22:45:51 No.1026630076
そんな深く考えて悩むようなものだろうか
24 23/02/14(火)22:47:15 No.1026630665
オブジェクト指向な言語で出てきたら意味が分かりにくい機能だと思うぞ
25 23/02/14(火)22:47:34 No.1026630783
使いどころがわからないからどう勉強していいかわからない
26 23/02/14(火)22:47:49 No.1026630883
気持ちは分かる 慣れると楽だから頑張れ
27 23/02/14(火)22:49:40 No.1026631671
>使いどころがわからないからどう勉強していいかわからない delegateに渡す関数書いたことない? そこでしか使わないのにいちいち名前考えるの面倒じゃん しかも渡す先決まってるってことは型をちゃんと書かなくてもわかるじゃん ラムダ式の出番だ!
28 23/02/14(火)22:49:45 No.1026631710
それこそ上にあるLINQでまず使う
29 23/02/14(火)22:49:46 No.1026631721
動作を知るまでは外の変数触れるのが気持ち悪かった いっそキャプチャを指定するC++のラムダの方が分かりやすいとすら当時は思った
30 23/02/14(火)22:50:28 No.1026631998
ググれば解説山ほど出てくるから片っ端から見てけばそのうち理解できる説明に出会えると思うよ
31 23/02/14(火)22:50:39 No.1026632067
>ラムダ式の出番だ! 手抜くなや!
32 23/02/14(火)22:51:14 No.1026632285
ラムダ式ってなんでラムダなの?
33 23/02/14(火)22:51:59 No.1026632580
かっこいいだろう?
34 23/02/14(火)22:52:10 No.1026632670
エクセルのと同じ?
35 23/02/14(火)22:52:23 No.1026632752
いいよね型推論
36 23/02/14(火)22:53:37 No.1026633235
ランバダ?
37 23/02/14(火)22:56:29 No.1026634417
>f=(x)=>x*x; 顔文字に見えてきた
38 23/02/14(火)22:57:05 No.1026634683
ラムダ式はC++にも仕様としてきて面白そうだからサンプル見ながら使ってるけど実際面白いね 自分でこれならラムダ式で簡単に記述できるみたいなのは出来ない
39 23/02/14(火)22:57:35 No.1026634891
リストの中身をちょっとだけ加工した別のリストを作りたいときに便利だよね
40 23/02/14(火)23:00:18 No.1026635985
ずっとJava触ってきて最近C#弄り始めたけどこれ色々めんどくせ!
41 23/02/14(火)23:01:39 No.1026636564
JAVAの方がはるかにダサくてめんどくせえ…
42 23/02/14(火)23:01:44 No.1026636609
JavaもC#も楽な方だから勉強しよう!
43 23/02/14(火)23:01:46 No.1026636624
別に使わなくても良いんだよ
44 23/02/14(火)23:01:52 No.1026636672
ラムダ式とクロージャは別の概念なんだけど 実際にはセットで使うことが多いのでわからないのはラムダじゃなくクロージャのほうなんじゃないかって気もするな
45 23/02/14(火)23:01:58 No.1026636724
Pythonだとlambdaっていちいち書くの面倒だからどうにかしてほしい 他のみたいに()=>でいいだろ
46 23/02/14(火)23:02:18 No.1026636874
LINQにしか使ってない
47 23/02/14(火)23:02:52 No.1026637102
ラムダは変数のキャプチャがすごくありがたい 本当にありがたい
48 23/02/14(火)23:03:21 No.1026637278
ありがたいサンプルにあるようなこの式を簡略化する…みたいに使うことがどれほどあるのやら
49 23/02/14(火)23:05:38 No.1026638165
最近は省略しすぎて逆に読みづらくない?
50 23/02/14(火)23:06:39 No.1026638538
キャプチャの仕組みが分からない…なんでそんなことできるの
51 23/02/14(火)23:06:43 No.1026638569
JavaはGUI周りが色々めんどくさい 文法はお行儀よくてすき
52 23/02/14(火)23:08:35 No.1026639335
20年くらいほとんど打ってなかったから昔の書式でしか書けん
53 23/02/14(火)23:08:39 No.1026639371
>キャプチャの仕組みが分からない…なんでそんなことできるの それをするのがクロージャじゃないかな
54 23/02/14(火)23:09:20 No.1026639696
VB.Netのラムダ式をご覧よ お願いだから矢印くだち…
55 23/02/14(火)23:09:43 No.1026639856
別スレッドからGUIいじるとき Invoke((Action)(()=>{label1.Text = "hoge";})); とかよくやる
56 23/02/14(火)23:11:19 No.1026640544
>ラムダ式とクロージャは別の概念なんだけど >実際にはセットで使うことが多いのでわからないのはラムダじゃなくクロージャのほうなんじゃないかって気もするな クロージャが便利なケースが思いつきにくいからな… 知っておくと楽なんだけど
57 23/02/14(火)23:11:23 No.1026640575
>JavaはGUI周りが色々めんどくさい というかC#が例外的に便利すぎる…
58 23/02/14(火)23:12:05 No.1026640849
ラムダ式はわかるけどどういうときに使えばいいかわかってない
59 23/02/14(火)23:12:55 No.1026641203
C#はGUIアプリを作るために生まれたようなものだと思っている
60 23/02/14(火)23:13:17 No.1026641361
>VB.Netのラムダ式をご覧よ >お願いだから矢印くだち… 1行で済むならまだ良いけど複数行のダサさは半端ない
61 23/02/14(火)23:14:24 No.1026641830
そもそもVB.NETがダサ…
62 23/02/14(火)23:14:35 No.1026641913
>クロージャが便利なケースが思いつきにくいからな… >知っておくと楽なんだけど 名前つけるまでもない無名の単機能クラスと考えると割と便利だと思う
63 23/02/14(火)23:15:10 No.1026642140
>そもそもVB.NETがダサ… しゃーねーだろ会社が使ってんだから…
64 23/02/14(火)23:15:58 No.1026642476
>そもそもBASICがダサ…
65 23/02/14(火)23:16:04 No.1026642517
VB.netって書き方がアレなだけで機能面ではC#と等価と考えていいんかな
66 23/02/14(火)23:16:07 No.1026642534
>そもそもVB.NETがダサ… いよいよ死にゆくことが確定したとは言え割と最近まで.netとともに拡張されてたし意外と悪くないぞ 案件はVBAの次にクソ
67 23/02/14(火)23:16:16 No.1026642602
だいたいLINQとかこねくり回しててだいたいわかった(そんなにわかってはいない)で自信を深めるようなものでは
68 23/02/14(火)23:17:23 No.1026643069
大体の機能はもっと簡単にコード書きてぇ~~から来てるからまず言語を使い込まないとどこで使うかと言うか まず無いと何が大変で、あると何が有り難いのかが分からなくて学習意欲湧かないんだよね
69 23/02/14(火)23:17:36 No.1026643150
読みやすさも割とある方だと思うよVB.NETは
70 23/02/14(火)23:17:49 No.1026643242
ダサいとか言うんならナウくてヤングなやつにリプレイスしてくださる?
71 23/02/14(火)23:18:12 No.1026643381
>ラムダ式はわかるけどどういうときに使えばいいかわかってない foreachとAddを使わずに1行でリストの中身を全部2倍したリストを作りたい! みたいなとき
72 23/02/14(火)23:18:26 No.1026643470
ラムダ式はパっと見で「なんでこれで動くの?」ってなりがち
73 23/02/14(火)23:19:23 No.1026643860
>>ラムダ式はわかるけどどういうときに使えばいいかわかってない >foreachとAddを使わずに1行でリストの中身を全部2倍したリストを作りたい! >みたいなとき 2倍が確定してるんならリスト作成のタイミングでやればよくない?
74 23/02/14(火)23:20:06 No.1026644162
一応レベルで書けるけど何がどう違うのかちゃんとわかってないわ 俺は雰囲気でプログラミングしている…
75 23/02/14(火)23:20:19 No.1026644270
慣れるとアクセサ便利だなと思う
76 23/02/14(火)23:21:04 No.1026644575
>>ラムダ式はわかるけどどういうときに使えばいいかわかってない >foreachとAddを使わずに1行でリストの中身を全部2倍したリストを作りたい! >みたいなとき 具体的にどういうコードにすればそれが実装出来るのか教えて
77 23/02/14(火)23:21:12 No.1026644627
1行で書かなくても良くない?ってなるのはだめですか
78 23/02/14(火)23:21:27 No.1026644735
switch文もラムダでかなり簡潔に書けるのいいね
79 23/02/14(火)23:21:37 No.1026644794
問題は可読性が落ちるということ
80 23/02/14(火)23:21:45 No.1026644852
とりあえずListをソートするとき比較関数をラムダで書くとか試してみればいいんじゃないだろうか
81 23/02/14(火)23:22:13 No.1026645032
>2倍が確定してるんならリスト作成のタイミングでやればよくない? 破壊的な変更ならforeachで回せば良いけど 形を変形とか結合したいとかちょっとしたsqlじみたことしたいならlinq無しではもうやりたくないな
82 23/02/14(火)23:22:41 No.1026645205
C#やJavaScriptでコレクション操作するときはラムダ式なしは考えられない
83 23/02/14(火)23:22:42 No.1026645213
可読性が落ちるようなところで使うことが稀じゃないですかね…
84 23/02/14(火)23:22:48 No.1026645262
>別の言語回ってきた方がラムダ式の理解は早いかもしれん やるか!lisp!
85 23/02/14(火)23:23:05 No.1026645376
>>>ラムダ式はわかるけどどういうときに使えばいいかわかってない >>foreachとAddを使わずに1行でリストの中身を全部2倍したリストを作りたい! >>みたいなとき >2倍が確定してるんならリスト作成のタイミングでやればよくない? それでもいいよ でも処理をやりたいことごとに分割したくなってくると欲しくなるよ
86 23/02/14(火)23:23:23 No.1026645498
>問題は可読性が落ちるということ 適切に使えばむしろ上がるでしょ
87 23/02/14(火)23:23:39 No.1026645599
VB.NET触るたびにC#で書き直したほうが良くないかという疑問に駆られながらコードを書く
88 23/02/14(火)23:23:49 No.1026645664
>1行で書かなくても良くない?ってなるのはだめですか ラムダ式の本体を{}でくくって500行くらい書いてもええで!
89 23/02/14(火)23:23:56 No.1026645715
最近読んだJSのコードだけど最初マジで何にもわからんかった const filterJson = ({ data: { contents = {}, ...data } = {}, ...json } = {}) => { Object.values(contents).forEach(content => delete content.overloaded); return { data: { contents, ...data }, ...json }; }
90 23/02/14(火)23:24:05 No.1026645770
VB6のソースをVB.NETにコンバートしたときに属性モリモリのド汚いコードになって こんなんだったら最初からC#勉強するわ…ってなってC#触り始めたので もしあの時メチャクチャきれいにコンバートされてたら多分今でもVB.NET使ってた
91 23/02/14(火)23:24:28 No.1026645899
where!orderby!select! で何とかなる
92 23/02/14(火)23:24:37 No.1026645949
プロトタイプは何考えて作ったんだろうな
93 23/02/14(火)23:25:09 No.1026646174
ラムダ式なんて無かった頃のC#しか知らないからチクショウ
94 23/02/14(火)23:25:16 No.1026646214
>>問題は可読性が落ちるということ >適切に使えばむしろ上がるでしょ 無名関数無しだとこの関数なに…?ってなるし クロージャ無しだとこのメンバ変数なに…?ってなるからな 局所的に使うものを局所に押し込められるのはいいことだ
95 23/02/14(火)23:25:19 No.1026646235
>最近読んだJSのコードだけど最初マジで何にもわからんかった jsがクソなだけに見える!
96 23/02/14(火)23:25:23 No.1026646268
>最近読んだJSのコードだけど最初マジで何にもわからんかった これは…読みづらい…
97 23/02/14(火)23:26:00 No.1026646501
安全な関数ポインタだから関数ポインタ使わないなら別に不自由もしないだろう概念だと思う
98 23/02/14(火)23:26:13 No.1026646587
jsはマジで括弧地獄でエディタの色分けなかったら何が何だか
99 23/02/14(火)23:26:19 No.1026646627
関数を渡す…最初はそんなことしてどうなるって思ってた
100 23/02/14(火)23:26:34 No.1026646714
>最近読んだJSのコードだけど最初マジで何にもわからんかった それ読みにくいの明らかにラムダのせいじゃねえだろ!
101 23/02/14(火)23:26:48 No.1026646813
ふふふ…thisが何を意味しているか迷うが良い…
102 23/02/14(火)23:27:15 No.1026646997
ラムダは一目見て理解できる規模ならむしろ使った方が分かりやすい時もある
103 23/02/14(火)23:27:18 No.1026647021
使い所はそのスコープ内でちょっとした処理を渡したいって時くらいだと思ってるけどたまにとんでもない量の処理を突っ込む人がいて驚く
104 23/02/14(火)23:27:50 No.1026647247
>最近読んだJSのコードだけど最初マジで何にもわからんかった これはきっと理解しなくて良いやつだ
105 23/02/14(火)23:27:58 No.1026647297
他のやり方で出来る機能は理解するのが難しい オブジェクト指向も難しかった
106 23/02/14(火)23:28:10 No.1026647378
>ふふふ…thisが何を意味しているか迷うが良い… jsは何故クロージャにthisをバインドしないんだろうな…
107 23/02/14(火)23:28:53 No.1026647670
みんな何言ってるか全然わからん…プログラミングって怖いな…
108 23/02/14(火)23:29:01 No.1026647722
空集合を{}で表す言語は混乱の下だからやめろって思ってる めちゃくちゃ多いけど
109 23/02/14(火)23:29:39 No.1026647969
慣れてきた頃に初期に自分が書いた関数の荒さに殺されるのいいよね…
110 23/02/14(火)23:29:53 No.1026648038
>ふふふ…thisが何を意味しているか迷うが良い… fu1922733.png こんな不謹慎なことをするためにラムダ式じゃなくてfunction文使ったわ
111 23/02/14(火)23:30:34 No.1026648294
>>別の言語回ってきた方がラムダ式の理解は早いかもしれん >やるか!lisp! ラムダはともかくクロージャ理解するならSICP読むのがいちば…いやどうかな…?
112 23/02/14(火)23:30:36 No.1026648311
reactはじめたての頃はthisの対象が理解できなくて困ったな…
113 23/02/14(火)23:31:20 No.1026648587
JSはJSON表記が混入するのがマジで迷惑 便利ではあるんだが
114 23/02/14(火)23:32:29 No.1026649009
>ラムダはともかくクロージャ理解するならSICP読むのがいちば…いやどうかな…? 日本語だけどあれ読んでも意味わかんねえよ
115 23/02/14(火)23:33:04 No.1026649234
>やるか!lisp! やりたいんだがオープン系に慣れすぎてサーバーとクライアントって形式じゃないと厳しいけど大丈夫?
116 23/02/14(火)23:33:22 No.1026649333
function使うと目の敵にされるらしいな
117 23/02/14(火)23:35:21 No.1026650034
PHPやってたらLINQが欲しい…ってなる
118 23/02/14(火)23:35:33 No.1026650112
サポートしてないけど一応ie使ってるお客さんもいるとか言われてアロー関数も正規表現リテラルも使えなくて辛い…
119 23/02/14(火)23:36:27 No.1026650397
>PHPやってたらLINQが欲しい…ってなる このarray_mapでなんとか…
120 23/02/14(火)23:38:00 No.1026650933
>サポートしてないけど一応ie使ってるお客さんもいるとか言われてアロー関数も正規表現リテラルも使えなくて辛い… 今更IE対応のJSなんて書きたくなさすぎる…