[過去ログ]
Rust part31 (1002レス)
Rust part31 http://mevius.5ch.net/test/read.cgi/tech/1751545806/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [] 2025/07/03(木) 21:30:06.95 ID:ORBrZxS2 公式 https://www.rust-lang.org/ https://blog.rust-lang.org/ https://github.com/rust-lang/rust 公式ドキュメント https://www.rust-lang.org/learn Web上の実行環境 https://play.rust-lang.org ※Rustを学びたい人はまず最初に公式のThe Bookを読むこと https://doc.rust-lang.org/book/ ※Rustを学ぶ際に犯しがちな12の過ち https://dystroy.org/blog/how-not-to-learn-rust ※Rustのasyncについて知りたければ「async-book」は必読 https://rust-lang.github.io/async-book/ ※次スレは原則>>980が立てること 前スレ Rust part30 https://mevius.5ch.net/test/read.cgi/tech/1748392296/ ワッチョイスレ プログラミング言語 Rust 4【ワッチョイ】 https://mevius.5ch.net/test/read.cgi/tech/1514107621/ http://mevius.5ch.net/test/read.cgi/tech/1751545806/1
2: デフォルトの名無しさん [sage] 2025/07/03(木) 22:02:35.22 ID:5eizpyG1 if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 { println!("`let_chains` was stabilized in this version"); } ↑よりも↓こっちのほうがわかりやすいな if let Channel::Stable(Semver { major, minor, .. }) = release_info { if major == 1 && minor == 88 { println!("`let_chains` was stabilized in this version"); } } http://mevius.5ch.net/test/read.cgi/tech/1751545806/2
3: デフォルトの名無しさん [sage] 2025/07/03(木) 23:20:17.81 ID:DF8MM2z8 >>2 それはサンプルであることと 本質はif多段を避けたい if let Channel::Stable(Semver { major, minor, .. }) = release_info && imajor == 1 && minor == 88 { println!("`let_chains` was stabilized in this version"); } http://mevius.5ch.net/test/read.cgi/tech/1751545806/3
4: デフォルトの名無しさん [sage] 2025/07/04(金) 00:29:23.67 ID:uYpH3kMo あくまでも例だね 今回の例に限ればこれが短く可読性もいい if let Channel::Stable(Semver { major: 1, minor: 88, .. }) = release_info { println!("`let_chains` was stabilized in this version!!!"); } http://mevius.5ch.net/test/read.cgi/tech/1751545806/4
5: デフォルトの名無しさん [] 2025/07/04(金) 00:39:18.38 ID:OGvk30E1 rust楽しい 仕事では全く使わんが趣味で遊んでる http://mevius.5ch.net/test/read.cgi/tech/1751545806/5
6: デフォルトの名無しさん [sage] 2025/07/04(金) 00:42:27.31 ID:sejGpbp9 ClaudeCodeもGeminiCLIもTypeScript製ですが、なぜ最強言語Rustで作らないんだろう あいつら頭悪いんですかね?なんかムカついてきた http://mevius.5ch.net/test/read.cgi/tech/1751545806/6
7: デフォルトの名無しさん [sage] 2025/07/04(金) 02:08:21.93 ID:al3hptYi 原理主義者きたー http://mevius.5ch.net/test/read.cgi/tech/1751545806/7
8: デフォルトの名無しさん [sage] 2025/07/04(金) 04:51:54.94 ID:j3pXRdpv rust使った後仕事でPythonに戻ると頭の使う場所が変わってすごい疲れる コンパイラーに頼りっきりの悪い癖で、Python走らせてランタイムエラー出るとドキッとしてしまうわ http://mevius.5ch.net/test/read.cgi/tech/1751545806/8
9: デフォルトの名無しさん [sage] 2025/07/04(金) 06:06:43.93 ID:JIudql3e できる限り性的に解決してくれる言語サイコー http://mevius.5ch.net/test/read.cgi/tech/1751545806/9
10: デフォルトの名無しさん [] 2025/07/04(金) 06:44:45.86 ID:ZoTp4+J7 AIを使う上で必要なのはプロンプトエンジニアリングよりも「コンテキストエンジニアリング」 https://gigazine.net/news/20250703-ai-context-engineering/ http://mevius.5ch.net/test/read.cgi/tech/1751545806/10
11: デフォルトの名無しさん [] 2025/07/04(金) 06:52:51.55 ID:OGvk30E1 >>6 全てのプログラムをRustにして そして私もRustになろう http://mevius.5ch.net/test/read.cgi/tech/1751545806/11
12: デフォルトの名無しさん [] 2025/07/04(金) 07:46:13.09 ID:ZoTp4+J7 7月2日 夜の番組で 安倍晋三 総理大臣 ドキュメンタリーをしていたのですが 山口県ではだれも逆らえなかった模様です ※自民党と対立候補ほかしれませんが自民党支持している者関係者?が対立している人が後ろから突飛ばしたりもしていたそうです ※自民党をに牙をむいたら物理的な新た暴力があるように流されていました 自民党が戦略として行ったのが反対意見を速やかにつぶすために自民党の議席を増やして議会で話をさせないようにもしていたようです 自民党の戦術としては裏で統一教会が動いていた模様で 統一教会がしていたことは 1 集会場の助っ人でさくら役であたかも人気があるように見せかけていた 2 選挙のやり方は熟知しているので何も言わなくても事務所は完成する 3 2と同様で選挙違反ぎりぎりの行動をして他の選挙立候補者に嫌がらせもしくは裏工作をしていた? ※兵庫県知事問題も暗躍していた可能性あり 4 統一教会からの投票だけでもまとまった票を集める 5 比例投票で○○党に投票すればさらにその政党の議席を増やせるしキムを作成したのも自民党? などあったのか知っている人教えて http://mevius.5ch.net/test/read.cgi/tech/1751545806/12
13: デフォルトの名無しさん [sage] 2025/07/04(金) 08:05:27.91 ID:oaxeMCLD アンジャッシュの新作コントが見たい http://mevius.5ch.net/test/read.cgi/tech/1751545806/13
14: デフォルトの名無しさん [sage] 2025/07/04(金) 08:33:07.43 ID:2TtQZu8y 2024 editionでif letチェーンができるようになった前提として 2024 editionでは以下のように一時的生成物のスコープ変更が行なわれている fn f(value: &RwLock<Option<bool>>) { if let Some(x) = *value.read().unwrap() { println!("value is {x}"); } // <--- 2024 edition だとここで read lock が drop else { let mut v = value.write().unwrap(); // 2021 editionだとここでデッドロック if v.is_none() { *v = Some(true); } } // <--- 2021 edition だとここで read lock が drop } http://mevius.5ch.net/test/read.cgi/tech/1751545806/14
15: デフォルトの名無しさん [sage] 2025/07/04(金) 08:55:18.58 ID:HIBkUYal >>4 C#だとこんな感じだからやっとRustが追いついて来た if (release_info() is Stable { Semver{ Major: 1, Minor: 88 } } stable) { Console.WriteLine($"Matched version: {stable.Version}"); } http://mevius.5ch.net/test/read.cgi/tech/1751545806/15
16: デフォルトの名無しさん [sage] 2025/07/04(金) 09:11:32.38 ID:O068PO4l >>15 勘違いしているようだが Rustでは当初からstruct/enum/list/rangeパターンマッチングできている むしろC#がRustより遅れてC#8.0でようやくlistパターンマッチングできるようになった http://mevius.5ch.net/test/read.cgi/tech/1751545806/16
17: デフォルトの名無しさん [sage] 2025/07/04(金) 09:48:57.07 ID:HIBkUYal 可読性では段違いにC#が優れている http://mevius.5ch.net/test/read.cgi/tech/1751545806/17
18: デフォルトの名無しさん [sage] 2025/07/04(金) 10:08:54.80 ID:3ctOs1dz 各言語それぞれ一長一短あるけどC#のように条件節でのパターンマッチがboolean expressionとしても扱われるほうが汎用的でベターな設計だと思う Rustはパターンマッチはboolean expressionではないから()で括ったり||でつなげたりできない 別のルールが必要になるのはわかるが今のやり方は対処療法というか無理やりパッチを当てたイメージ 当初ターゲットだった2018エディションでは実現できず次のターゲットだった2021エディションでも実現できず8年近くも”慎重に検討を重ねて”対処療法の妥協の産物しか生み出せない現状を見ると根本的な進化はあまり期待しないほうがいいと思ってる http://mevius.5ch.net/test/read.cgi/tech/1751545806/18
19: デフォルトの名無しさん [sage] 2025/07/04(金) 10:22:41.50 ID:pz2zExAy >>17 よく見ろよ>>4と>>15 Rustが可読性も良い http://mevius.5ch.net/test/read.cgi/tech/1751545806/19
20: デフォルトの名無しさん [sage] 2025/07/04(金) 10:26:08.30 ID:HIBkUYal 主客が逆転している if let Channel::Stable(Semver { major: 1, minor: 88, .. }) = release_info の方が可読性が良いというのはおかしい コーディングする場合も release_info() が major: 1, minor: 88であるかのチェックなのでC#が自然 これを左辺に持ってきて可読性が良いというのは無理がある http://mevius.5ch.net/test/read.cgi/tech/1751545806/20
21: デフォルトの名無しさん [sage] 2025/07/04(金) 10:26:51.75 ID:aOfpZ2e6 >>18 変数を宣言するからletだという基本を理解しましょう http://mevius.5ch.net/test/read.cgi/tech/1751545806/21
22: デフォルトの名無しさん [sage] 2025/07/04(金) 10:27:34.97 ID:HIBkUYal Rustでコーディングする際は右辺を書いてから左辺に戻ることになる 非常に不自然で劣っている http://mevius.5ch.net/test/read.cgi/tech/1751545806/22
23: デフォルトの名無しさん [sage] 2025/07/04(金) 10:28:08.57 ID:aOfpZ2e6 >>20 変数を宣言するからletだという基本を理解しましょう C#が劣っています http://mevius.5ch.net/test/read.cgi/tech/1751545806/23
24: デフォルトの名無しさん [sage] 2025/07/04(金) 10:29:32.89 ID:HIBkUYal >>23 誰が見てもC#の方が優れている 今後Rustにも取り入れられるかもしれない それが理解できないお前が劣っているとしか言いようがない http://mevius.5ch.net/test/read.cgi/tech/1751545806/24
25: デフォルトの名無しさん [sage] 2025/07/04(金) 10:31:15.69 ID:wZ441BSd >>20 そんなの主観と慣れだろう。 OCaml あたりから持ち込まれた記法なので C 系にしか馴染みがなければ読みにくく感じるのは理解できるが優劣をいうような筋合いのものではない。 http://mevius.5ch.net/test/read.cgi/tech/1751545806/25
26: デフォルトの名無しさん [sage] 2025/07/04(金) 10:31:51.81 ID:HIBkUYal >>25 主観ではない Rustは事実上ヨーダ記法と同じことをしている http://mevius.5ch.net/test/read.cgi/tech/1751545806/26
27: デフォルトの名無しさん [sage] 2025/07/04(金) 10:32:09.16 ID:aOfpZ2e6 >>24 まずはRustのlet文を学んでください C#が間違っていると明確にわかりますよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/27
28: デフォルトの名無しさん [sage] 2025/07/04(金) 10:34:18.39 ID:HIBkUYal C#がやっていることは事実上 x is 88のチェック Rustがやっているのは事実上 88 is xのチェック http://mevius.5ch.net/test/read.cgi/tech/1751545806/28
29: デフォルトの名無しさん [sage] 2025/07/04(金) 10:37:23.35 ID:wZ441BSd >>26 この例でやっていることが比較ではなくパターンマッチなのだということがわからないのか? 比較で書きたきゃそうも書けるよ。 http://mevius.5ch.net/test/read.cgi/tech/1751545806/29
30: デフォルトの名無しさん [sage] 2025/07/04(金) 10:39:35.11 ID:HIBkUYal >>29 では>>4をまともな日本語に変換してからコーディングしてみろよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/30
31: デフォルトの名無しさん [sage] 2025/07/04(金) 10:41:17.29 ID:yzVoJtUY >>30 そういう人を試すふりですべての答えにいちゃもんを付ける態度が一番卑怯だよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/31
32: デフォルトの名無しさん [sage] 2025/07/04(金) 10:42:22.73 ID:h364eCOG >>20 それはC#が文法設計を失敗して間違えているんだよ C#ではvarや代入でパターンマッチングする時はちゃんと左辺(値が入る変数がある側)と右辺(任意の式) Rustでも全く同じでこれが正しい そしてRustではifの中でも>>4のように一貫して同じ形なる C#は一貫性がなく文法設計を間違えた http://mevius.5ch.net/test/read.cgi/tech/1751545806/32
33: デフォルトの名無しさん [sage] 2025/07/04(金) 10:43:11.39 ID:HIBkUYal >>31 事実だろ試すふりじゃないだろ? もしバージョンが丸々ならと言う条件式のコーディング順をなんで逆にするんだよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/33
34: デフォルトの名無しさん [sage] 2025/07/04(金) 10:44:29.15 ID:HIBkUYal >>32 Rustはその場しのぎで糖衣構文を導入したので上手くいかなかっただけだろ? ヨーダ記法が正しいのか?コーディングしやすいのか? http://mevius.5ch.net/test/read.cgi/tech/1751545806/34
35: デフォルトの名無しさん [sage] 2025/07/04(金) 10:46:38.35 ID:HIBkUYal 事実上やりたいのはこれ if x is 88 xが88に束縛されているか?のチェック if 88 is x 88がxに束縛されているのかと言うのは不自然で主客逆転している http://mevius.5ch.net/test/read.cgi/tech/1751545806/35
36: デフォルトの名無しさん [sage] 2025/07/04(金) 10:49:13.21 ID:h364eCOG >>34 この件でRustに糖衣構文なんかない letもif letも新規変数側が左辺となり一貫したわかりやすい文法となっている 一方でC#は一貫性なく真逆にして失敗した http://mevius.5ch.net/test/read.cgi/tech/1751545806/36
37: デフォルトの名無しさん [sage] 2025/07/04(金) 10:51:18.40 ID:HIBkUYal >>36 言語として破綻しててコーディングしにくいRustが失敗してる http://mevius.5ch.net/test/read.cgi/tech/1751545806/37
38: デフォルトの名無しさん [sage] 2025/07/04(金) 10:58:39.15 ID:h364eCOG >>37 文法に一貫性がなく失敗作のC#とは異なり Rustでは一貫して常に同じ形でわかりやすく記述できる let Foo { x, y, } = a; let Foo { x: 123, y, } = a else { ... }; if let Foo { x: 123, y, } = a { ... } else { ... } http://mevius.5ch.net/test/read.cgi/tech/1751545806/38
39: デフォルトの名無しさん [sage] 2025/07/04(金) 10:59:55.20 ID:ZCWHj/xV 醜い争いだなw http://mevius.5ch.net/test/read.cgi/tech/1751545806/39
40: デフォルトの名無しさん [sage] 2025/07/04(金) 11:03:32.72 ID:HIBkUYal もしバージョンが1.88である場合と言うコードを書くときに 先に数値や構造を書くのはおかしな話だろう? コーディングしにくいなって感じるだろう? もしバージョンがと言う時点でこれを綺麗にコードに落とせないのはプログラムする側の問題ではなくRustの問題なので いつかC#のような形式が取り込まれる そうしないと書きにくいのを我慢して使うことになる http://mevius.5ch.net/test/read.cgi/tech/1751545806/40
41: デフォルトの名無しさん [sage] 2025/07/04(金) 11:09:17.97 ID:h364eCOG C#だけが文法設計に失敗して一貫性のない醜い文法となってしまった 新規変数が右辺に来る異様さ Rustはわかりやすく可読性の良い形で一貫した文法となっている http://mevius.5ch.net/test/read.cgi/tech/1751545806/41
42: デフォルトの名無しさん [sage] 2025/07/04(金) 11:13:36.96 ID:HIBkUYal >>41 残りの人生を書きにくいルールで右辺左辺行ったり来たりし続けるつもりか? もしバージョンが1.88である場合を自然に記述できないRustのことを憂いたほうが良い Rustの可読性とコーディング性向上のためにC#のような文法の取り入れの提案書でも書けばよい http://mevius.5ch.net/test/read.cgi/tech/1751545806/42
43: デフォルトの名無しさん [sage] 2025/07/04(金) 11:20:48.50 ID:IQMzIZOQ この件はRustなどC#以外の言語が正しいよ 代入ならば既出の > let Foo { x, y, } = a; > let Foo { x: 123, y, } = a else { ... }; > if let Foo { x: 123, y, } = a { ... } else { ... } 他の言語と同様に代入される側が常に左辺の原則 C#では右辺に来る過ちを犯した 比較ならば if Foo { x: 123, y: 456, } = a { ... } else { ... } if a = Foo { x: 123, y: 456, } { ... } else { ... } 対等なので他の言語と同様に左辺と右辺は入れ替えてもよい C#では入れ替えができない不自由 http://mevius.5ch.net/test/read.cgi/tech/1751545806/43
44: デフォルトの名無しさん [] 2025/07/04(金) 11:26:30.89 ID:OGvk30E1 話ずれるけど Syntactic Sugar (糖衣構文)をカタカナで「シンタックスシュガー」と言い始めたやつを過去に戻ってぶん殴りたい http://mevius.5ch.net/test/read.cgi/tech/1751545806/44
45: デフォルトの名無しさん [sage] 2025/07/04(金) 17:05:40.02 ID:OI9Lh1US Algorithmic〜 をアルゴリズミック〜とは訳さないことが多いのと同じで日本人にとって超馴染みの薄い形容詞形の単語をそのまま使わずによく知られた使いやすい名詞形のnoun + noun形式にするパターン syntax sugarでもネイティブにもノンネイティブにも問題なく通じるからそんなに気にしなくていいよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/45
46: デフォルトの名無しさん [sage] 2025/07/04(金) 20:45:43.08 ID:uq+xMRPp 普通にif x is Some(Ok(value))の方が良くね? chatGPTに案出ししてもらったら if x matches Some(y) とか出して来た http://mevius.5ch.net/test/read.cgi/tech/1751545806/46
47: デフォルトの名無しさん [sage] 2025/07/04(金) 21:40:03.12 ID:TbEgb2Ls 一貫性があり最も優れている記述法 > let Foo { x, y, } = a; > let Foo { x: 123, y, } = a else { ... }; > if let Foo { x: 123, y, } = a { ... } else { ... } 変数代入は必ず左辺にその変数が来る http://mevius.5ch.net/test/read.cgi/tech/1751545806/47
48: デフォルトの名無しさん [sage] 2025/07/04(金) 21:47:39.19 ID:uq+xMRPp 単純な変数代入じゃないし…といってもつたわらないなか? もしaがSome(b)だとしたらと言う文脈 そのほうが書くのは楽だし http://mevius.5ch.net/test/read.cgi/tech/1751545806/48
49: デフォルトの名無しさん [sage] 2025/07/04(金) 22:31:48.02 ID:CkdJ7cjj 主観でいうならPython の def foo() -> str | None: ... if (f := foo()) is str: # このブロックでは f は str が分かりやすいという人もいるんじゃないの? Pythonは英語の自然な文法に近いと言われるけど、そういうのを「可読性」と呼ぶ人もいる 関数型の書き方が好きなら Rust の構文を好むだろうけど、C#のスタイルだって十分理解しやすい その言語で書いていればすぐに慣れるような問題だし、正直かなり些細な話だと思う http://mevius.5ch.net/test/read.cgi/tech/1751545806/49
50: デフォルトの名無しさん [sage] 2025/07/04(金) 22:39:48.52 ID:5zc4SaJd >>48 Rust使ったことないでしょ? 代入でなく比較なら対称だから入れ替えてどちらでも書けるよ if a == Some(b) { if Some(b) == a { http://mevius.5ch.net/test/read.cgi/tech/1751545806/50
51: デフォルトの名無しさん [sage] 2025/07/04(金) 22:40:25.66 ID:xvN7viZF >>46 考えたことなかったが言われてみればこの2つなら上のほうが明らかに可読性はいいな if x is Some(Ok(value)) {…} if let Some(Ok(value)) = x {…} まあでも今のやり方でも許容範囲なので俺は別に構わないが http://mevius.5ch.net/test/read.cgi/tech/1751545806/51
52: デフォルトの名無しさん [sage] 2025/07/04(金) 22:51:50.85 ID:YS2Js17U >>51 上のC#構文は非常にわかりにくくなってる if letの置き換えだけでなくletやlet elseも書いてごらん > let Foo { x, y, } = a; > let Foo { x: 123, y, } = a else { ... }; > if let Foo { x: 123, y, } = a { ... } else { ... } http://mevius.5ch.net/test/read.cgi/tech/1751545806/52
53: デフォルトの名無しさん [sage] 2025/07/04(金) 23:28:49.57 ID:OevS8/0x 代入される左辺値が右側に来ることもあるC#は最悪だ 文法に整合性がない http://mevius.5ch.net/test/read.cgi/tech/1751545806/53
54: デフォルトの名無しさん [sage] 2025/07/05(土) 09:29:48.43 ID:pq7Cj05V >>39 本当にそう思う 笑い無しの真顔で http://mevius.5ch.net/test/read.cgi/tech/1751545806/54
55: デフォルトの名無しさん [sage] 2025/07/05(土) 09:33:40.72 ID:To+HU3do 色んな言語がある中 最もダメなC#でRustスレを荒らしに来て倒されたコント http://mevius.5ch.net/test/read.cgi/tech/1751545806/55
56: デフォルトの名無しさん [sage] 2025/07/05(土) 12:48:59.24 ID:IvwLD0VH そうですか Rustにも早くdowncast patternが入るといいですね http://mevius.5ch.net/test/read.cgi/tech/1751545806/56
57: デフォルトの名無しさん [sage] 2025/07/05(土) 14:12:46.57 ID:X00W2RsD Rustは10年前の1.0の時からdowncastできるよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/57
58: デフォルトの名無しさん [sage] 2025/07/05(土) 15:52:38.96 ID:q1Gtuhav 他の言語から来るとletみたいな束縛の考えに馴染みが無いんじゃない? メジャーな言語で採用してるのはRustくらいだし (Swiftも?) var x = ... のように代入する言語だと、is string や when x < 0 のような条件は後付けする方が自然な気がする var (string x) = foo() みたいな構文はあり得ないわけだから http://mevius.5ch.net/test/read.cgi/tech/1751545806/58
59: デフォルトの名無しさん [sage] 2025/07/05(土) 15:56:08.92 ID:N7XfN1yQ letはHaskellからパクったキーワードでしょ http://mevius.5ch.net/test/read.cgi/tech/1751545806/59
60: デフォルトの名無しさん [sage] 2025/07/05(土) 15:56:29.40 ID:B1JMipmh Rustに構文を追加するなら「Rustユーザーにとって自然であること」が正義で、C#に構文を追加するなら「C#ユーザーにとって自然であること」が正義というだけの話 http://mevius.5ch.net/test/read.cgi/tech/1751545806/60
61: デフォルトの名無しさん [sage] 2025/07/05(土) 16:13:01.56 ID:Cfq4jI1n >>58 >>60 どの言語でも新たに代入される変数は必ず左側の左辺に来る原則があるんだよ C#はそれがなぜか右側に来ることもある不作法と一貫性の無さが批判されてる http://mevius.5ch.net/test/read.cgi/tech/1751545806/61
62: デフォルトの名無しさん [sage] 2025/07/05(土) 16:20:30.23 ID:7adKTS5g 単なる主観なのに可読性とかかっこつけんなよw http://mevius.5ch.net/test/read.cgi/tech/1751545806/62
63: デフォルトの名無しさん [sage] 2025/07/05(土) 16:22:02.84 ID:SoZdSA74 いつも可読性の低い汚コードを披露してくださってる複オジ大先生の可読性講義はありがたい 一般人には理解しがたい汚コーダーの心理を知ることができる大変貴重な機会 http://mevius.5ch.net/test/read.cgi/tech/1751545806/63
64: デフォルトの名無しさん [sage] 2025/07/05(土) 16:26:56.00 ID:E3MH6Lcw 複おじはRustならなんでも良い人だから if x is Some(Ok(value)) {…}が導入されたらどうするのか http://mevius.5ch.net/test/read.cgi/tech/1751545806/64
65: デフォルトの名無しさん [sage] 2025/07/05(土) 16:35:04.80 ID:2M7CqIfD 整合性がなく他の言語から見ても異端なC#のどうでもいい話でRustスレを荒らして何がしたいんだろうな http://mevius.5ch.net/test/read.cgi/tech/1751545806/65
66: デフォルトの名無しさん [sage] 2025/07/05(土) 16:46:38.73 ID:qZ93qmfR >>60 左辺値が右側に来る不自然な文法を採用している言語はC#だけ http://mevius.5ch.net/test/read.cgi/tech/1751545806/66
67: デフォルトの名無しさん [sage] 2025/07/05(土) 17:54:23.08 ID:IvwLD0VH ところでmatches!マクロの引数はpattern, scrutineeの順ですね 間にあるのが=じゃないからどうでもいいか 文法をそこまで気にする意味ってなんだろうね http://mevius.5ch.net/test/read.cgi/tech/1751545806/67
68: デフォルトの名無しさん [sage] 2025/07/05(土) 17:55:05.10 ID:IvwLD0VH >>67 いや逆だ、scrunitee, patternの順 http://mevius.5ch.net/test/read.cgi/tech/1751545806/68
69: デフォルトの名無しさん [sage] 2025/07/05(土) 18:41:21.67 ID:lbbyBqBC matches!はmatch式の順序に従ってる http://mevius.5ch.net/test/read.cgi/tech/1751545806/69
70: デフォルトの名無しさん [sage] 2025/07/05(土) 18:45:25.78 ID:N7XfN1yQ そういや、俺はRustであんまりmatch式使ってないなあ Scala書いてた時はアホみたいに多用してたのに http://mevius.5ch.net/test/read.cgi/tech/1751545806/70
71: デフォルトの名無しさん [sage] 2025/07/05(土) 18:55:54.06 ID:/SDSty6t Rustでも他の言語のmatch文やswitch文と同様にこの順序だよ match ターゲット { パターン1 => 値1, パターン2 => 値2, ... } パターンに合致するかの真偽値がほしい時は match ターゲット { パターン => true, _ => false, } これをマクロ matches!(ターゲット, パターン) として用意してるだけだよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/71
72: デフォルトの名無しさん [sage] 2025/07/05(土) 19:54:23.33 ID:VOx5iHml 釣り針がデカいですね http://mevius.5ch.net/test/read.cgi/tech/1751545806/72
73: デフォルトの名無しさん [sage] 2025/07/05(土) 20:11:12.40 ID:BbgyVmWu >>67 matches!で変数に値が代入されてその変数が使われることはありえない だからそもそも代入変数が左に来る話の対象外 http://mevius.5ch.net/test/read.cgi/tech/1751545806/73
74: デフォルトの名無しさん [sage] 2025/07/05(土) 22:06:06.04 ID:q1Gtuhav 「他の言語」てのは関数型言語くらいしか無いんじゃないの? http://mevius.5ch.net/test/read.cgi/tech/1751545806/74
75: デフォルトの名無しさん [sage] 2025/07/05(土) 22:54:21.80 ID:IvwLD0VH >>73 代入じゃなくて束縛な 表層的な文法の話するならC#は=じゃなくてisなんだからRustのif letとは別物だし比較してもしょうがない、とも言える というかC#er的には「動的型判定のis演算子を拡張して作ったんだから型が後ろに来たほうが自然だね、イチから作り直すなら別の文法でもいいけど」くらいにしか思わないしな 他言語を知る気が無いなら好きに思ってればいいけど、だったら荒らしだとか不自然だとか変なケチ付けずにスルーするべきだ http://mevius.5ch.net/test/read.cgi/tech/1751545806/75
76: デフォルトの名無しさん [] 2025/07/05(土) 23:01:35.02 ID:lZw753Wj ここはRustスレ C#erとやらがいつも暴れていることこそタブー 出禁な http://mevius.5ch.net/test/read.cgi/tech/1751545806/76
77: デフォルトの名無しさん [sage] 2025/07/05(土) 23:16:48.59 ID:PVqr3Cva >>75 >> 型が後ろに来たほうが自然だね ここ意味がわからない 右辺式も左辺束縛パターン式も通常は同じ型で区別はないよ 後ろは束縛パターンではなく右辺式となるのが普通だね http://mevius.5ch.net/test/read.cgi/tech/1751545806/77
78: デフォルトの名無しさん [sage] 2025/07/05(土) 23:25:51.26 ID:CUiBCYBD if (x is int) のような型判定のisを拡張して if (x is int a) のようにパターンマッチも使えるようにした という話を理解してないから意味わからないんでしょ 頼むよ複おじ〜 http://mevius.5ch.net/test/read.cgi/tech/1751545806/78
79: デフォルトの名無しさん [sage] 2025/07/05(土) 23:28:41.76 ID:IvwLD0VH スルーするべきだとこちらからわざわざ書いているのに、それでも反応してしまうなら、これはスレチではないということでいいんだね? >>77 Rustしか知らないとそれが「通常」で「普通」なんだろうなということはよく分かるよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/79
80: デフォルトの名無しさん [sage] 2025/07/05(土) 23:31:50.52 ID:IvwLD0VH そもそもmatchでもifでもないif let相当の構文がわざわざ用意されてる言語ってそんなにあったっけという感じ 普通ってなんだっけ http://mevius.5ch.net/test/read.cgi/tech/1751545806/80
81: デフォルトの名無しさん [sage] 2025/07/05(土) 23:34:23.07 ID:UzVr4/VY Rustが優秀すぎ 特にlet elseが便利すぎる http://mevius.5ch.net/test/read.cgi/tech/1751545806/81
82: デフォルトの名無しさん [sage] 2025/07/05(土) 23:39:26.10 ID:fELDm2s5 どのプログラミング言語でも同じ 値が代入される変数がある側を左側に書いて左辺値(L-Value)とも呼ばれる 代入する値がある側を右側に書いて右辺値(R-Value)とも呼ばれる http://mevius.5ch.net/test/read.cgi/tech/1751545806/82
83: デフォルトの名無しさん [sage] 2025/07/05(土) 23:49:12.59 ID:I56lB4/6 C#だけおかしい 値が代入される変数がなぜか右側に来る http://mevius.5ch.net/test/read.cgi/tech/1751545806/83
84: デフォルトの名無しさん [sage] 2025/07/06(日) 00:07:39.02 ID:lRp9/n7j 年を取ると固定観念が強くなりすぎて自分のやり方考え方以外は認められなくなるってやつだな 後置ifを親の仇のごとく毛嫌いしてたお年寄りを思い出した http://mevius.5ch.net/test/read.cgi/tech/1751545806/84
85: デフォルトの名無しさん [sage] 2025/07/06(日) 00:20:16.92 ID:zqvmJlyP またletのこと束縛じゃなくて代入って言ってるし Rustのほうもダメダメじゃないか http://mevius.5ch.net/test/read.cgi/tech/1751545806/85
86: デフォルトの名無しさん [sage] 2025/07/06(日) 00:22:40.71 ID:XwybGXxU 左辺値を右に置いたのはC#が初めて? http://mevius.5ch.net/test/read.cgi/tech/1751545806/86
87: デフォルトの名無しさん [sage] 2025/07/06(日) 00:28:28.56 ID:zqvmJlyP 誰からもツッコまれないから延々同じ勘違い垂れ流し続けててウケますね http://mevius.5ch.net/test/read.cgi/tech/1751545806/87
88: デフォルトの名無しさん [sage] 2025/07/06(日) 00:33:15.50 ID:McLsJkFl 構文なんてのはかなり瑣末な問題だからな 一般的な開発者は「パフォーマンスが必要だからRust」「Unityでゲーム開発したいからC#」「科学計算に強いからPython」のような選び方をする 「パターンマッチの構文が美しい」とかの理由が言語選定に影響することはまず無い 構文の良さで「勝つ」ことは無いというのは、Scalaなんかを見れば分かる話 企業がRustにら求めるメリットは「メモリ安全かつ高速」という特性の方 もし仮にRustが JVM で動く言語だったとしたら、「構文が美しい」というメリットはあっても、それが Java に勝つことは無いというのは分かるでしょ http://mevius.5ch.net/test/read.cgi/tech/1751545806/88
89: デフォルトの名無しさん [sage] 2025/07/06(日) 00:34:21.43 ID:0as+y0VS Rustは従来のプログラミング言語と同じ形 左右逆転のC#は前例がないと思う http://mevius.5ch.net/test/read.cgi/tech/1751545806/89
90: デフォルトの名無しさん [sage] 2025/07/06(日) 00:44:22.43 ID:HzRlk2pS 前例がないのは別に悪いことではない 現実の実装は知らんけど`x is int a`は`x.Is(int, var out a)`と考えればありふれた形でもある http://mevius.5ch.net/test/read.cgi/tech/1751545806/90
91: デフォルトの名無しさん [sage] 2025/07/06(日) 00:45:28.51 ID:KkaZGoEi これ経緯の最初はRustの構文はおかしいと言い出してC#の例を持ち出してきたところからスタートしてるな C#erとやらはC#のみが異端であることに気付いていなかった http://mevius.5ch.net/test/read.cgi/tech/1751545806/91
92: デフォルトの名無しさん [sage] 2025/07/06(日) 01:12:01.40 ID:HzRlk2pS パターンマッチでC#がRustより優れてる点はis演算子を使ったパターンマッチ式がブール式だということ ブール式が使えるところではどこでも使えてどのブール演算も使える 型判定のisを拡張した副作用かもしれないが 8年もかけてツギハギだらけのlet-chainsしか作れないのと比べると羨ましい限り 語順はどちらかというと些末な問題 http://mevius.5ch.net/test/read.cgi/tech/1751545806/92
93: デフォルトの名無しさん [sage] 2025/07/06(日) 01:19:17.49 ID:11lsXWC0 >>90 それは左辺値を理解できていないかな 例えばC#のlist is [first, .. , last]や Rustの[first, .. , last] = list この[first, .. , last]は左辺値だから関数に渡すことはできない 関数に渡すと右辺値になってしまう http://mevius.5ch.net/test/read.cgi/tech/1751545806/93
94: デフォルトの名無しさん [sage] 2025/07/06(日) 09:20:13.49 ID:KjjDSONE >>93 それこそ勝手に自分の編み出した左辺値の定義にとらわれてる老害としか思えない if x is y(z) これがわかりにくいとか、不都合が出てるならダメだけどこれは何も問題は引き起こしてない http://mevius.5ch.net/test/read.cgi/tech/1751545806/94
95: デフォルトの名無しさん [sage] 2025/07/06(日) 09:40:05.23 ID:oWLlECDI Kotlinみたいなのはどうなん? val a: Any = "hello" if (a is String) { // このブロックでは a は String println(a.length) // .length にアクセス可能 } 合理的だし便利だけど、この値は Any で宣言されてて、かつ String 型の別の引数に代入されてもいない 構文の一貫性に拘る人は、こういうのも受け入れないタイプなんかね? http://mevius.5ch.net/test/read.cgi/tech/1751545806/95
96: デフォルトの名無しさん [sage] 2025/07/06(日) 09:51:03.49 ID:oWLlECDI パターンマッチでないけど、Golangはかなり一貫性を欠いてると思う ジェネリクスはずっと無かったのに、ビルドインの make 関数だけ特別扱いされてるなど だけど多くの人にとってそんなのは重要でないし、そういう気持ち悪さとは関係なく、一定の人気を得ている 言語オタクが拘るようなところって、実用上はそんな問題にされないんだよ http://mevius.5ch.net/test/read.cgi/tech/1751545806/96
97: デフォルトの名無しさん [sage] 2025/07/06(日) 09:59:51.35 ID:zqvmJlyP この人は言語オタクとかじゃなくてすべてがRust風でないと気に入らない病人だから http://mevius.5ch.net/test/read.cgi/tech/1751545806/97
98: デフォルトの名無しさん [sage] 2025/07/06(日) 10:09:00.81 ID:E6KLY+k2 みんなはパターンマッチングの話をしているのに パターンマッチングの例を一つも出せない人が連投してるな http://mevius.5ch.net/test/read.cgi/tech/1751545806/98
99: デフォルトの名無しさん [sage] 2025/07/06(日) 10:23:10.17 ID:KjjDSONE is演算子の話をしてるんだと思う http://mevius.5ch.net/test/read.cgi/tech/1751545806/99
100: デフォルトの名無しさん [sage] 2025/07/06(日) 10:24:24.82 ID:nk12zw98 パターンでなくても左辺値ならどれでもいい どの言語でも必ず左側に来る C#だけ右側に来ることがあり異様 http://mevius.5ch.net/test/read.cgi/tech/1751545806/100
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 902 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.029s