闘え
※前スレ
C++ vs Rust
https://mevius.5ch.net/test/read.cgi/tech/1619219089/
C vs C++ vs Rust Part.2
https://mevius.5ch.net/test/read.cgi/tech/1639539350/
C vs C++ vs Rust Part.3
■ このスレッドは過去ログ倉庫に格納されています
2022/01/27(木) 22:19:47.56ID:avZQ9Wm7
761デフォルトの名無しさん
2022/03/25(金) 18:59:38.47ID:JpusqDH/762デフォルトの名無しさん
2022/03/25(金) 19:32:15.82ID:h6MJAUlj763デフォルトの名無しさん
2022/03/25(金) 21:14:50.48ID:u98H5tRm どっちもどっちなんだが
煽ってるやつの指摘を理解できないやつらも普通にヤバいからな
煽ってるやつの指摘を理解できないやつらも普通にヤバいからな
764デフォルトの名無しさん
2022/03/25(金) 21:15:45.94ID:Sf6AbPmi バカだからコード書けないのに煽ってコードくださいって言うんだよw
765デフォルトの名無しさん
2022/03/25(金) 21:25:12.39ID:1BFpe92B766デフォルトの名無しさん
2022/03/25(金) 21:43:21.60ID:Ux3SzCLX >>759
今まで見てきて『汚コード』と連呼する時は特徴がある
forやifが使われずにイテレータ連鎖や条件メソッドが使われるRustコードの時に『汚コード』と言っている
そのため『汚コード』連呼の人は以下の3つのタイプいずれか
(1) 自分のコードの書き方に偏った信念があって他を受け付けない頑固タイプ
(2) 自分が理解できないコードがあると批判したくなる知弱タイプ
(3) Rustに反感がありRust的な書き方を嫌っているアンチタイプ
今まで見てきて『汚コード』と連呼する時は特徴がある
forやifが使われずにイテレータ連鎖や条件メソッドが使われるRustコードの時に『汚コード』と言っている
そのため『汚コード』連呼の人は以下の3つのタイプいずれか
(1) 自分のコードの書き方に偏った信念があって他を受け付けない頑固タイプ
(2) 自分が理解できないコードがあると批判したくなる知弱タイプ
(3) Rustに反感がありRust的な書き方を嫌っているアンチタイプ
767デフォルトの名無しさん
2022/03/25(金) 22:02:00.11ID:9tHxWkJU 汚ゴーダの承認要求w
768デフォルトの名無しさん
2022/03/25(金) 22:06:20.29ID:6nlCsPOx >>766
2か3だろう
2か3だろう
769デフォルトの名無しさん
2022/03/25(金) 22:53:50.64ID:thqo/0xR まあ1なら信念を説明するなりコードで示すなりするだろうからな
770デフォルトの名無しさん
2022/03/25(金) 23:17:24.40ID:Sf6AbPmi そもそもどうでもいい内容だからなw
771デフォルトの名無しさん
2022/03/25(金) 23:26:38.46ID:5On1tMu9772デフォルトの名無しさん
2022/03/25(金) 23:30:13.03ID:eoZx8ezX773デフォルトの名無しさん
2022/03/26(土) 00:40:57.22ID:9q2PYIcF 書けないやつがいると思うところが怖いw
774デフォルトの名無しさん
2022/03/26(土) 00:41:52.74ID:9q2PYIcF まじでみんなどんどんRustを嫌いになっていくねw
775デフォルトの名無しさん
2022/03/26(土) 01:38:57.93ID:JTqKZDur776デフォルトの名無しさん
2022/03/26(土) 02:27:45.11ID:9q2PYIcF 何度でも言うが書けないのではなく、書かないだけw 煽っても何も出んぞw お前が書けないからって他の人も書けないとか思うなw
777デフォルトの名無しさん
2022/03/26(土) 04:58:35.06ID:YsGlpYqC >>776
今回はコードを読めなかったため批判したりコードを書くところまで辿り着けなかったというオチなんだろ
今回はコードを読めなかったため批判したりコードを書くところまで辿り着けなかったというオチなんだろ
778デフォルトの名無しさん
2022/03/26(土) 06:40:57.68ID:9q2PYIcF 何言ってんだ?この人w 自分のおつむが足りないからって同じ基準で他人を見ない方がいいよw
779デフォルトの名無しさん
2022/03/26(土) 07:02:16.69ID:lZnQW6V9 珍しく反応していないからコードが読めなかったに一票
780デフォルトの名無しさん
2022/03/26(土) 09:36:14.32ID:9y5xuIje 反応がワンパターンになってきてるから、相手が諦めるまで同じ内容を繰り返すんだろうな
低能にありがちな行動w
低能にありがちな行動w
781デフォルトの名無しさん
2022/03/26(土) 12:25:46.50ID:ShQHM1dQ お互い相手にしてもらえるやつがいて良かったね
隔離スレ立てたやつに感謝
隔離スレ立てたやつに感謝
782デフォルトの名無しさん
2022/03/26(土) 23:51:11.15ID:/7nLRmyg >>749
組み合わせ集合の意味が不明だが['a', 'b', 'c']に対して冪集合の冪集合ことか?
>>743のコードの関数呼び出し部分を展開すると
「一覧(冪(冪(n)))」は「(0..(1 << (1 << n)))」
つまり冪集合の冪集合を0から255(=2^(2^3)-1)までの数値でbit表現していることになる
集合の表記でこれ以上は簡単にならないし応用も一番広く効くのではないか
あとは素直に位相を満たす条件でフィルタしてるだけだな
| .filter(|&s|
| 所属(s, 全体集合(n)) && //これは必須条件
| 所属(s, 空集合(n)) && //これも必須条件
| 要素一覧(s, 冪(n)).all(|x|
| 要素一覧(s, 冪(n)).all(|y|
| 所属(s, 積集合(x, y)) && //任意のintersectionも要素となる必須条件
| 所属(s, 和集合(x, y)) //任意のunionも要素も要素となる必須条件
| )))
全てがビット演算のみで済んでいるようだから
どの言語で書いてもこれ以上はシンプルかつ高速にならないと思われる
組み合わせ集合の意味が不明だが['a', 'b', 'c']に対して冪集合の冪集合ことか?
>>743のコードの関数呼び出し部分を展開すると
「一覧(冪(冪(n)))」は「(0..(1 << (1 << n)))」
つまり冪集合の冪集合を0から255(=2^(2^3)-1)までの数値でbit表現していることになる
集合の表記でこれ以上は簡単にならないし応用も一番広く効くのではないか
あとは素直に位相を満たす条件でフィルタしてるだけだな
| .filter(|&s|
| 所属(s, 全体集合(n)) && //これは必須条件
| 所属(s, 空集合(n)) && //これも必須条件
| 要素一覧(s, 冪(n)).all(|x|
| 要素一覧(s, 冪(n)).all(|y|
| 所属(s, 積集合(x, y)) && //任意のintersectionも要素となる必須条件
| 所属(s, 和集合(x, y)) //任意のunionも要素も要素となる必須条件
| )))
全てがビット演算のみで済んでいるようだから
どの言語で書いてもこれ以上はシンプルかつ高速にならないと思われる
783デフォルトの名無しさん
2022/03/27(日) 00:20:42.47ID:PoGWmBV8 また本人が自画自賛し始めたw この手の処理はbit演算では書かないよw 自分で調べてみればいいw
競プロマニア君が速いコード書けないのに頑張ったって言ってもらいたいらしいw
競プロマニア君が速いコード書けないのに頑張ったって言ってもらいたいらしいw
784デフォルトの名無しさん
2022/03/27(日) 00:33:18.39ID:BBGNEHmu785デフォルトの名無しさん
2022/03/27(日) 01:17:15.21ID:PoGWmBV8 それにしか使えないから書かないんだよw
786デフォルトの名無しさん
2022/03/27(日) 01:24:54.54ID:+ow6V/HP787デフォルトの名無しさん
2022/03/27(日) 01:29:17.18ID:snCfFGlK 普段の仕事もコードを一切書かないで口だけ出す仕事なんだろうな。
788デフォルトの名無しさん
2022/03/27(日) 03:56:07.43ID:PoGWmBV8789デフォルトの名無しさん
2022/03/27(日) 06:10:36.04ID:WvsZWRxm790デフォルトの名無しさん
2022/03/27(日) 07:40:41.39ID:mRPtF6UE791デフォルトの名無しさん
2022/03/27(日) 08:50:56.35ID:PoGWmBV8792デフォルトの名無しさん
2022/03/27(日) 08:52:43.09ID:KQB4wW2v そうやって以後は安価で
793デフォルトの名無しさん
2022/03/27(日) 08:53:00.96ID:0J12mqZ3 オウム返しのつもりとか恥の上塗りw
794デフォルトの名無しさん
2022/03/27(日) 08:58:56.59ID:XGyUiIw6795デフォルトの名無しさん
2022/03/27(日) 10:19:26.28ID:6AFZPnaE >>783
bit演算より速いコードってなにかある?
bit演算より速いコードってなにかある?
796デフォルトの名無しさん
2022/03/27(日) 10:31:00.82ID:rqiHHq3k > この手の処理はbit演算では書かないよw
一切コードを書かないならこれは真だなw
一切コードを書かないならこれは真だなw
797デフォルトの名無しさん
2022/03/27(日) 10:49:42.15ID:PoGWmBV8798デフォルトの名無しさん
2022/03/27(日) 10:54:38.88ID:8Tlml6j+ マジでなんでコード書かないの?
799デフォルトの名無しさん
2022/03/27(日) 10:55:27.25ID:hQNNJiB+800デフォルトの名無しさん
2022/03/27(日) 11:44:30.72ID:PoGWmBV8801デフォルトの名無しさん
2022/03/27(日) 12:15:36.07ID:CPBl4WFe802デフォルトの名無しさん
2022/03/27(日) 12:28:35.30ID:PoGWmBV8803デフォルトの名無しさん
2022/03/27(日) 16:26:12.94ID:snCfFGlK c++にもhygienicマクロ導入してくれたらなぁ
804デフォルトの名無しさん
2022/03/27(日) 17:22:03.05ID:WcFtzXHa Rustのmacroはident属性指定により変数名に関してはhygienicだな
ライフタイムとジェネリック型に関してはそうでないけれど
ライフタイムとジェネリック型に関してはそうでないけれど
805デフォルトの名無しさん
2022/03/27(日) 21:22:52.61ID:PoGWmBV8 マクロそのものが原則いらんw
806デフォルトの名無しさん
2022/03/28(月) 07:49:38.26ID:pN+hSa41 >>783
bit演算を使わないもっと速いコードというのを教えてください
bit演算を使わないもっと速いコードというのを教えてください
807デフォルトの名無しさん
2022/03/28(月) 09:01:32.11ID:ZJaztVr1808デフォルトの名無しさん
2022/03/28(月) 21:03:15.30ID:dJWBHkZn IDE使ってwindows.hとかインクルードしてた時
マクロの処理のせいでどんだけ遅くなってメモリ食ってるんだろうと
よく不安な気持ちになってた
マクロの処理のせいでどんだけ遅くなってメモリ食ってるんだろうと
よく不安な気持ちになってた
809デフォルトの名無しさん
2022/03/28(月) 21:19:08.60ID:aetLX46N810デフォルトの名無しさん
2022/03/28(月) 23:04:54.34ID:51Y1Thh9 まだ続けてんのかよw
Google様の模範解答とか言って的外れなの出されてもw
#includeは別にマクロのせいで遅くなるとかそういう話でもないし、マクロなんか処理としてはまるで重くないw
存在が悪というだけw
Google様の模範解答とか言って的外れなの出されてもw
#includeは別にマクロのせいで遅くなるとかそういう話でもないし、マクロなんか処理としてはまるで重くないw
存在が悪というだけw
811デフォルトの名無しさん
2022/03/28(月) 23:08:33.54ID:SvEFPfvN >>810
ビット演算を使わない速いコードをそろそろ披露して。
ビット演算を使わない速いコードをそろそろ披露して。
812デフォルトの名無しさん
2022/03/29(火) 07:54:52.06ID:CtwsyWiP C++11以降の規画いじりて、よのなかのニーズからすると斜め上の
ユーザーにそっぽ向かれるような規画ばっかなんで注力したのかな?
テンプレートで定義した関数、なんとかうまく自動選択されるように頑張ってみたモノの
最後は泥縄メタ関数でゴテゴテ飾り立てたってのがこの10年だったような気がしてならない
そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの?
あれ慣れてしまうともうtry,catchなんかうざくて使えない
ユーザーにそっぽ向かれるような規画ばっかなんで注力したのかな?
テンプレートで定義した関数、なんとかうまく自動選択されるように頑張ってみたモノの
最後は泥縄メタ関数でゴテゴテ飾り立てたってのがこの10年だったような気がしてならない
そんなことよりC#でファイルオープンするときに使えるusingとかC++で実装されてるの?
あれ慣れてしまうともうtry,catchなんかうざくて使えない
813デフォルトの名無しさん
2022/03/29(火) 08:06:32.47ID:fHExY7tI814デフォルトの名無しさん
2022/03/29(火) 09:06:35.79ID:tKmNrPY6 スコープアウトでなんかしたいならデストラクタでどうにかするC++の方針を知らんのか?
815デフォルトの名無しさん
2022/03/29(火) 10:21:53.60ID:HFhqj5qW ちんちんシュッ!シュッ!シュッ!
816デフォルトの名無しさん
2022/03/29(火) 13:42:47.10ID:CtwsyWiP817デフォルトの名無しさん
2022/03/29(火) 13:43:14.23ID:CtwsyWiP >>813
なんやお前
なんやお前
818デフォルトの名無しさん
2022/03/29(火) 14:16:16.84ID:CtwsyWiP 例えば C$の
$"X = {X}"
に慣れてしまうと
cerr,coutあたりの
"x = " << x
とか邪魔臭すぎるだろ
null合体演算子にしてもそう。これがあるかないかで生産性大違い
恐らくすぐにでも実装出来そうな機能が未だに実装されてない。
async/awaitでもC++20でようやく正式サポートだっけ
どこ見て標準規格きめてんの?
CユーザがC++知ってしまうとPure Cで書くのがいやになるように
C++ユーザがC#知ってしまうともうC++で書くのがめんどくさくてかなわんのよな
$"X = {X}"
に慣れてしまうと
cerr,coutあたりの
"x = " << x
とか邪魔臭すぎるだろ
null合体演算子にしてもそう。これがあるかないかで生産性大違い
恐らくすぐにでも実装出来そうな機能が未だに実装されてない。
async/awaitでもC++20でようやく正式サポートだっけ
どこ見て標準規格きめてんの?
CユーザがC++知ってしまうとPure Cで書くのがいやになるように
C++ユーザがC#知ってしまうともうC++で書くのがめんどくさくてかなわんのよな
819デフォルトの名無しさん
2022/03/29(火) 15:10:25.26ID:s791HQmS820デフォルトの名無しさん
2022/03/29(火) 15:59:34.10ID:ffasCIjO そもそもusingと
> 例外処理のデフォルト処理のことを言ってるんだが
になんの関係があるんだ?
> 例外処理のデフォルト処理のことを言ってるんだが
になんの関係があるんだ?
821デフォルトの名無しさん
2022/03/29(火) 16:42:51.37ID:sOLohvn0 usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C#にはRAIIがないから try/finally とかで解放処理を書く必要があったりしてそのtry構文はクソ面倒だけど、usingを使うとお手軽に書ける
まあRAIIがあればそもそもこんなの不要かな
C#にはRAIIがないから try/finally とかで解放処理を書く必要があったりしてそのtry構文はクソ面倒だけど、usingを使うとお手軽に書ける
まあRAIIがあればそもそもこんなの不要かな
822デフォルトの名無しさん
2022/03/29(火) 17:03:56.94ID:1RqC5Y4R RAIIはGC使わない言語用だからな
823デフォルトの名無しさん
2022/03/29(火) 17:07:15.66ID:7ru2bWxl RAIIほどポンコツな名前が長く使われてるケースも珍しいよね
自浄作用とかないのかな
自浄作用とかないのかな
824デフォルトの名無しさん
2022/03/29(火) 17:16:42.76ID:QRpFWUID C#にもlock statementみたいにRAII的なものもある
825デフォルトの名無しさん
2022/03/29(火) 17:59:34.97ID:bjKur886 むしろC++がもたらしたものの中で
一番冴えてるのがRAIIだと思うけど
一番冴えてるのがRAIIだと思うけど
826デフォルトの名無しさん
2022/03/29(火) 18:09:07.22ID:wvo3NcdM そういえばCにdeferが入るかもって話はどうなったんだ?
827デフォルトの名無しさん
2022/03/29(火) 19:17:05.07ID:tpB/JA+o >>816
たぶん
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
のこと言ってるんだろうけど
例外処理のデフォルトってfinallyのことだよな?
finallyで処理するのは例外の時だけじゃないぞ
return/continue/break/throwでusingブロックを抜けるときにIDisposable.Dispose()を実行するための構文だぞ
たぶん
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
のこと言ってるんだろうけど
例外処理のデフォルトってfinallyのことだよな?
finallyで処理するのは例外の時だけじゃないぞ
return/continue/break/throwでusingブロックを抜けるときにIDisposable.Dispose()を実行するための構文だぞ
828デフォルトの名無しさん
2022/03/29(火) 19:52:33.02ID:AEoeDiSF >>821
C#: usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C++: スコープ内で定義すると、スコープアウトされたときにデストラクタを呼び出すことが保証される
まさか知らないの?
C#: usingでインスタンス生成すると、スコープアウトされたときにDisposeメソッドを呼び出すことが保証される
C++: スコープ内で定義すると、スコープアウトされたときにデストラクタを呼び出すことが保証される
まさか知らないの?
829デフォルトの名無しさん
2022/03/29(火) 20:32:11.38ID:/9JyHlX1 >>822
GCは関係ないな
GCは関係ないな
830デフォルトの名無しさん
2022/03/29(火) 22:21:27.32ID:HLabfOkH スコープ抜けた時の動作するって代物ならやっぱdeferのが明示的で使いやすいってのがcにも入った理由だろうな。
831デフォルトの名無しさん
2022/03/29(火) 22:40:18.50ID:zunmlMTL deferって実際に入ったの? 提案されただけでなく?
書き方が楽なのはC#で間違いない
リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
RAIIって別にそんな重要なキーワードじゃなく、名前はないけど昔からあった考え方で、Windows3.1時代でも皆普通に使ってた
書き方が楽なのはC#で間違いない
リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
RAIIって別にそんな重要なキーワードじゃなく、名前はないけど昔からあった考え方で、Windows3.1時代でも皆普通に使ってた
832デフォルトの名無しさん
2022/03/29(火) 22:56:21.68ID:UoyzmKMm833デフォルトの名無しさん
2022/03/29(火) 23:05:49.29ID:/9JyHlX1 >リソースリーク対策でC#のusingみたいな構文を渋々突っ込んだgc言語は多数
C#のusingとpythonのwithと、あと有名どころだと何があったっけか
C#のusingとpythonのwithと、あと有名どころだと何があったっけか
834デフォルトの名無しさん
2022/03/30(水) 06:51:40.79ID:ES6j8MQa835デフォルトの名無しさん
2022/03/30(水) 07:54:45.46ID:ES6j8MQa836デフォルトの名無しさん
2022/03/30(水) 07:56:10.67ID:ES6j8MQa837デフォルトの名無しさん
2022/03/30(水) 08:14:44.56ID:MqQwCbKz838デフォルトの名無しさん
2022/03/30(水) 08:18:15.81ID:qdlu4xZp >>834
横だけど、std::ostreamてRAII使えなかったっけ?
コードは適当。
if (std::ofstream sw(filename)) {
sw << "test" << '\n';
} else {
std::cerr << "unable to open '" << filename << "'\n";
}
横だけど、std::ostreamてRAII使えなかったっけ?
コードは適当。
if (std::ofstream sw(filename)) {
sw << "test" << '\n';
} else {
std::cerr << "unable to open '" << filename << "'\n";
}
839デフォルトの名無しさん
2022/03/30(水) 08:47:18.97ID:zgtKcvNm >>834
C++向けに設計されたライブラリならデストラクタに終了処理を全部書いてあるのでusing構文自体が不要
スコープアウトでデストラクタが呼ばれる
std::ofstream fs("a.txt");
fs<<"test"<<std::endl;
C++向けに設計されたライブラリならデストラクタに終了処理を全部書いてあるのでusing構文自体が不要
スコープアウトでデストラクタが呼ばれる
std::ofstream fs("a.txt");
fs<<"test"<<std::endl;
840デフォルトの名無しさん
2022/03/30(水) 08:57:42.45ID:zgtKcvNm841デフォルトの名無しさん
2022/03/30(水) 10:15:21.19ID:sgjjbJfo842デフォルトの名無しさん
2022/03/30(水) 13:15:41.55ID:ES6j8MQa >>839
>fs<<"test"<<std::endl;
ファイルオープンできてるかどうかわからないのに書き込むのかよwww
C++てファイルオープンできてもないところに書き込んだときに
処理を停止せず、自動でうまく例外処理するおしゃれな機能なんてあったっけ?
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
とじゃ全然意味が違うだろ
なんでエラーチェックしないの?
わざわざチェックしなきゃいけないかどうかの話をしてんだよ
わざと論点ずらすな
>C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない
その通り
それを問題にしてんの。
そのおかげでC++では生産性の向上が見られない
認めてるじゃねーかwww
>fs<<"test"<<std::endl;
ファイルオープンできてるかどうかわからないのに書き込むのかよwww
C++てファイルオープンできてもないところに書き込んだときに
処理を停止せず、自動でうまく例外処理するおしゃれな機能なんてあったっけ?
using(var sw=new StreamWriter("a.txt")){
sw.WriteLine("test");
}
とじゃ全然意味が違うだろ
なんでエラーチェックしないの?
わざわざチェックしなきゃいけないかどうかの話をしてんだよ
わざと論点ずらすな
>C#2.0以降に実装されてた糖衣構文の多くはC++には実装されていない
その通り
それを問題にしてんの。
そのおかげでC++では生産性の向上が見られない
認めてるじゃねーかwww
843デフォルトの名無しさん
2022/03/30(水) 13:54:11.00ID:nEZBRLmQ C++ vs C#スレ立てるか?
844デフォルトの名無しさん
2022/03/30(水) 14:02:35.35ID:uj+JKNAz >>842
> ファイルオープンできてるかどうかわからないのに書き込むのかよwww
そういうのが欲しけりゃエラー時に例外を出すようにしとけばいいだけ
C# 使ってりゃそれぐらいわかるだろ
... 使えてりゃねw
> ファイルオープンできてるかどうかわからないのに書き込むのかよwww
そういうのが欲しけりゃエラー時に例外を出すようにしとけばいいだけ
C# 使ってりゃそれぐらいわかるだろ
... 使えてりゃねw
845デフォルトの名無しさん
2022/03/30(水) 15:37:33.26ID:Blieee3P846デフォルトの名無しさん
2022/03/30(水) 18:17:46.54ID:aaZp/+dN >>838見ればC++がなぜ衰退していくかよくわかるな
847デフォルトの名無しさん
2022/03/30(水) 18:28:11.81ID:4Wrqo5DU848デフォルトの名無しさん
2022/03/30(水) 20:08:24.48ID:WCI7hBXJ iostreamなんて今使ってないだろ
849デフォルトの名無しさん
2022/03/30(水) 20:21:40.16ID:qIK9n1MF > C#のusingみたいな構文
C#の発明と言うより、発祥は、お前らの嫌いな、Visual Basic(VBA)の、With〜
End Withじゃないかな?
C#の発明と言うより、発祥は、お前らの嫌いな、Visual Basic(VBA)の、With〜
End Withじゃないかな?
850デフォルトの名無しさん
2022/03/30(水) 20:22:04.28ID:UJJsLtPb C++は例外がcharベースのwhatしかない時点で日本語Win上では実情と合わなくなるんよね。
851デフォルトの名無しさん
2022/03/30(水) 20:22:32.28ID:/krHLZdG >>834
Rustだと以下のようになる
> ・using
RustもC++と同じくRAIIなのでusingは不要
let mut file = File::create("a.txt")?;
file.write("test")?;
エラー時は?演算子で即returnとなり例外処理と類似状態になる
スコープを抜ける時に自動的にデストラクタdrop()が呼ばれる
何もしなくてもファイルなら自動closeされてロックなら自動解除される
> ・$"X = {X}"
Rustでは標準マクロ利用でほぼ同様の形式
format!("x={x}")
> ・null合体演算子
Rustは安全重視のため各型にnullやnilといった値が無い状態というものがない
そこで関数型言語と同様に代数的データであるenumを用いてジェネリックにT型に対してenum Option<T>型を使う
Option<T>型はT型の値tが存在する場合Some(t)と存在しない場合Noneの2つのenum値をとる
なのでnullに対応するものはNoneとなるが型が異なるので明白に区別できてミスがあればコンパイル時に検出可能
Rustだと以下のようになる
> ・using
RustもC++と同じくRAIIなのでusingは不要
let mut file = File::create("a.txt")?;
file.write("test")?;
エラー時は?演算子で即returnとなり例外処理と類似状態になる
スコープを抜ける時に自動的にデストラクタdrop()が呼ばれる
何もしなくてもファイルなら自動closeされてロックなら自動解除される
> ・$"X = {X}"
Rustでは標準マクロ利用でほぼ同様の形式
format!("x={x}")
> ・null合体演算子
Rustは安全重視のため各型にnullやnilといった値が無い状態というものがない
そこで関数型言語と同様に代数的データであるenumを用いてジェネリックにT型に対してenum Option<T>型を使う
Option<T>型はT型の値tが存在する場合Some(t)と存在しない場合Noneの2つのenum値をとる
なのでnullに対応するものはNoneとなるが型が異なるので明白に区別できてミスがあればコンパイル時に検出可能
852デフォルトの名無しさん
2022/03/30(水) 20:25:10.41ID:/krHLZdG >>834
> ・null合体演算子
Rustでは>>851という状況なのでnull合体演算子についても少し概念が違ってくるが
xがNoneの時にDEFAULT_VALUEとしたい場合
x.or(Some(DEFAULT_VALUE)) でOption<T>型を得る
x.or(Some(DEFAULT_VALUE)).unwrap() でT型を得る
x.unwrap_or(DEFAULT_VALUE) が上記の簡易版でT型を得る
例えばC#での x ?? y ?? z を全てOption<T>型で表すと
Rustでは x.or(y).or(z) となりほぼ同じシンプルな表現
ちなみに?演算子によるNone時の即retun Noneも可能で
例えば各メソッドがOption<T>型を返すとするとこれでT型を得られる
let output = input.method1()?.method2()?.method3()?;
> ・null合体演算子
Rustでは>>851という状況なのでnull合体演算子についても少し概念が違ってくるが
xがNoneの時にDEFAULT_VALUEとしたい場合
x.or(Some(DEFAULT_VALUE)) でOption<T>型を得る
x.or(Some(DEFAULT_VALUE)).unwrap() でT型を得る
x.unwrap_or(DEFAULT_VALUE) が上記の簡易版でT型を得る
例えばC#での x ?? y ?? z を全てOption<T>型で表すと
Rustでは x.or(y).or(z) となりほぼ同じシンプルな表現
ちなみに?演算子によるNone時の即retun Noneも可能で
例えば各メソッドがOption<T>型を返すとするとこれでT型を得られる
let output = input.method1()?.method2()?.method3()?;
853デフォルトの名無しさん
2022/03/30(水) 20:27:16.59ID:WCI7hBXJ854デフォルトの名無しさん
2022/03/30(水) 20:31:07.93ID:UJJsLtPb それは例外そのものの型のことでしょ。
基本的にはexceptionの派生や孫で作られてるものが大半だからwhatでメッセージ受けるわけだが、
何のエンコードかは定かではない。
基本的にはexceptionの派生や孫で作られてるものが大半だからwhatでメッセージ受けるわけだが、
何のエンコードかは定かではない。
855デフォルトの名無しさん
2022/03/30(水) 20:33:36.81ID:qIK9n1MF >>842
根本的な理解がない、残念君のご様子。
> std::ofstream fs("a.txt");
コンストラクタでOpenする場合、失敗すると例外がスローされるから、関数内
または上位でtry〜catchかな。 C#やJavaで毎回NULL参照チェック書いてるか?
いずれにしろ、オープンされていないオブジェクトが
> fs<<"test"<<std::endl;
に渡されることはない。 こうした処理は、オブジェクトのシリアライズ処理を実装
した関数内へ記述して、参照渡しでオープン済のオブジェクトを渡すのが一般的。
根本的な理解がない、残念君のご様子。
> std::ofstream fs("a.txt");
コンストラクタでOpenする場合、失敗すると例外がスローされるから、関数内
または上位でtry〜catchかな。 C#やJavaで毎回NULL参照チェック書いてるか?
いずれにしろ、オープンされていないオブジェクトが
> fs<<"test"<<std::endl;
に渡されることはない。 こうした処理は、オブジェクトのシリアライズ処理を実装
した関数内へ記述して、参照渡しでオープン済のオブジェクトを渡すのが一般的。
856デフォルトの名無しさん
2022/03/30(水) 20:43:31.08ID:/krHLZdG Rustにはnullも例外もなく
どちらも代数的データ型であるenumで表現するため
シンプルかつ安全性をコンパイル時に保証できる
どちらも代数的データ型であるenumで表現するため
シンプルかつ安全性をコンパイル時に保証できる
857デフォルトの名無しさん
2022/03/30(水) 21:06:36.60ID:UJJsLtPb RustでC#のdynamicみたいなことやるにはどうするの?
858デフォルトの名無しさん
2022/03/30(水) 21:23:30.04ID:yBbOBLyf >>849
全然ちゃうわww
全然ちゃうわww
859デフォルトの名無しさん
2022/03/30(水) 21:25:28.30ID:9xKIjqbP >>857
C#はdynamic型という間違った方法を取ったため
C#は実行時エラーおよび実行時例外が発生し安全でない
Rustは型とは直行するトレイトがあるため
複数の様々な型に対して共通する振る舞いをトレイトとして実装できる
これらはコンパイル時にチェックされ実行時の安全性が保証される
更に加えてトレイトの利用方法は用途に向けて2種類用意されている
1つは利用時にimpl Traitで宣言する静的なトレイト利用であり
複数の様々な型に対して各々の静的に異なるコードが適用され高速である
もう1つは利用時にdyn Traitで宣言する動的なトレイト利用であり
複数の様々な型に対して実行時にダイナミックにディスパッチし柔軟である
2種類ともにコンパイル時にチェック確定するため
Rustではこれら実行時にエラーや例外が起きることはない
C#はdynamic型という間違った方法を取ったため
C#は実行時エラーおよび実行時例外が発生し安全でない
Rustは型とは直行するトレイトがあるため
複数の様々な型に対して共通する振る舞いをトレイトとして実装できる
これらはコンパイル時にチェックされ実行時の安全性が保証される
更に加えてトレイトの利用方法は用途に向けて2種類用意されている
1つは利用時にimpl Traitで宣言する静的なトレイト利用であり
複数の様々な型に対して各々の静的に異なるコードが適用され高速である
もう1つは利用時にdyn Traitで宣言する動的なトレイト利用であり
複数の様々な型に対して実行時にダイナミックにディスパッチし柔軟である
2種類ともにコンパイル時にチェック確定するため
Rustではこれら実行時にエラーや例外が起きることはない
860デフォルトの名無しさん
2022/03/30(水) 21:55:25.20ID:qIK9n1MF > Rustではこれら実行時にエラーや例外が起きることはない
実行時にメモリが足りなくなったら、Rustで書かれたプログラムは
どんな挙動を返すの?
実行時にメモリが足りなくなったら、Rustで書かれたプログラムは
どんな挙動を返すの?
861デフォルトの名無しさん
2022/03/30(水) 21:57:54.53ID:UJJsLtPb それだと使えないなぁ。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 両手でフレミングの法則やってくれ [577451214]
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
