- 1 : 2024/09/20(金) 21:45:50.325 ID:kWqZd/zt0
- プリミティヴ型は所有権が移動しても破棄されないとかダブスタにも程があるんよ
- 2 : 2024/09/20(金) 21:48:44.541 ID:kWqZd/zt0
- let a = 5;←プリミティヴ型のint i32
let b = a;←bに所有権が移動(プリミティヴじゃない型なら普通ここでaは破棄される)
test(a);←test()関数を作りaを渡す
test1(a);
test2(a);
↑
これ普通にうごくんだがwwww - 3 : 2024/09/20(金) 21:50:28.092 ID:kWqZd/zt0
- 逆に
let a = String::from(“VIP”);←プリミティヴじゃない型の代表としてString型とする
let b = a;
test(a);←これでコンパイルエラー - 4 : 2024/09/20(金) 21:51:51.368 ID:kWqZd/zt0
- こういうダブスタの多い言語って全然完成されてる感無いから嫌いなんだが
あとからどんどんいらない機能足していってカオスになりそうな未来しか無い - 5 : 2024/09/20(金) 21:54:34.166 ID:VgAEOlzo0
- 先にC言語やりなって・・・
文字列ってのは型じゃなくて配列なんだよ
その最初の基本を知らんから同じように型だと思っちゃう - 6 : 2024/09/20(金) 21:58:31.550 ID:kWqZd/zt0
- >>5
いやだとしてもi32が移動されないのは問題だろ - 7 : 2024/09/20(金) 22:00:39.856 ID:VgAEOlzo0
- そんな風に思っちゃうのはメモリ内部のアドレスがどうなってるか全然予想できてないからに過ぎない
シーシャはさぁ流行りのIT用語に惑わされすぎ
本当に情報工学やりたいならちゃんとC言語とアセンブラやってメモリとアドレスの勉強しなさい
情熱が空回りしてますよ - 9 : 2024/09/20(金) 22:09:57.110 ID:kWqZd/zt0
- >>7
なぜプリミティヴ型の場合は安全になるの?
教えてくれ - 12 : 2024/09/20(金) 22:13:03.921 ID:VgAEOlzo0
- >>9
プリミティブ型が安全などという概念自体がない
シーシャはどうして誰も言ってないことをいきなり言い出すのか - 14 : 2024/09/20(金) 22:15:54.496 ID:kWqZd/zt0
- >>12
安全だからコンパイルできるようになってんじゃねぇの? - 8 : 2024/09/20(金) 22:08:27.801 ID:9Rx1thwJ0
- プリミティブかどうかは関係ないぞ
Copyトレイトでググれ - 10 : 2024/09/20(金) 22:10:47.696 ID:kWqZd/zt0
- >>8
&つけるやつ?
それ参照渡しだろ?
これは参照渡しじゃない - 11 : 2024/09/20(金) 22:11:52.949 ID:kWqZd/zt0
- これをダブスタと言えない理由を教えてくれよ
どう見てもダブスタでは? - 18 : 2024/09/20(金) 22:21:30.574 ID:kWqZd/zt0
- じゃあaが破棄されるタイミングっていつなんだ?
ブロック抜けるまで破棄されない感じになんのか?
それはメモリコピーしたbも同様ってことか? - 22 : 2024/09/20(金) 22:29:49.180 ID:9Rx1thwJ0
- >>18
ブロックを抜けたときと思ってOK
整数の場合はスタックにあるものなので、解放時に特別な処理が走ったりはしない
文字列や配列かつそのデータを他と共有していない場合 (RcやArcを使ってない場合) は、ブロックを抜けたタイミングでヒープのデータも解放される - 26 : 2024/09/20(金) 22:35:02.815 ID:kWqZd/zt0
- >>22
文字列とかの場合
{
let b = String::from(“Hage”);
test(b);
}
の場合このブロックが終了してもbは保持されててtest()が終わった段階で破棄されるってことか - 20 : 2024/09/20(金) 22:25:20.171 ID:VgAEOlzo0
- プログラミングの基本であるヒープにおけるメモリ確保と解放を理解できてないから
型の破棄とかいうわけのわからないことを言い出すんだ、そんなもんないわ
シーシャはもうプログラミング用語を勝手に自分で解釈するくせやめろ - 25 : 2024/09/20(金) 22:32:04.052 ID:kWqZd/zt0
- >>20
型の解放なんか一つも言ってねぇよ
メモリの解放って意味なんだが - 21 : 2024/09/20(金) 22:27:04.829 ID:OzrU8wc70
- c言語も知らないメモリ管理に興味ないならわざわざrustやる理由ないだろ
GO言語のほうがお前には向いてるよ - 24 : 2024/09/20(金) 22:31:28.655 ID:kWqZd/zt0
- >>21
いや俺はC#するよ
Google嫌いなのでGoは一生使いません - 27 : 2024/09/20(金) 22:35:09.688 ID:5V0aZ9/l0
- そんなことより週何回オ●ニーする?
- 28 : 2024/09/20(金) 22:35:55.076 ID:kWqZd/zt0
- >>27
5 - 31 : 2024/09/20(金) 22:48:36.142 ID:j7WXiP890
- 一生c#に閉じこもってろ
- 32 : 2024/09/20(金) 22:49:32.145 ID:kWqZd/zt0
- >>31
Rust学ぶ気が無いゴミがなんか言ってるw
イメージでRust持ち上げててワロタwww - 33 : 2024/09/20(金) 22:53:03.877 ID:kWqZd/zt0
- Rustの速さって制限かけてLLVMで機械語に翻訳出来るってところしかないんだから他のメモリ安全の言語でLLVMに通せたらそれが一番いいよねって話になる
正直そうなればRustの存在価値とか無くなる - 34 : 2024/09/20(金) 22:54:24.290 ID:j7WXiP890
- 公式チュートリアルも読めない奴がなんか言ってる
- 35 : 2024/09/20(金) 22:55:15.654 ID:kWqZd/zt0
- >>34
公式チュートリアルすら読まないやつがなんか言ってるw - 40 : 2024/09/20(金) 22:59:40.821 ID:j7WXiP890
- >>35
存在すら知らんかったのが何を言うてる - 37 : 2024/09/20(金) 22:57:29.311 ID:OzrU8wc70
- c言語(というか低レベルなメモリ管理)が配列をどんなふうに扱ってるか知れば一貫性があるし混乱しにくくて面白い仕様だと思えるんだけどね
実体を持っている変数は代入で実体コピー、ポインタを持っている変数は代入でポインタコピーされる
この動作は一貫性があるけど「ys=xsでコピーしたと思ったらしてなかった」ありがちな間違いを起こしやすい
だからその間違いをコンパイルエラーにしてやろうってのが面白いしプリミティブな型と違うのもすんなり納得できる - 39 : 2024/09/20(金) 22:58:55.247 ID:+/BJo4cO0
- やっぱりスクール通ったほうが覚えが速いな
コメント