Rustとか言うダブスタ言語

2024/10/17(木) 08:07:52.57
値型と参照型で振る舞い変えるダブスタ言語だけど使ってるやついる?
2仕様書無しさん
垢版 |
2024/10/17(木) 08:12:28.58
いる
2024/10/17(木) 08:13:54.33
>>2
どうやって心の整理つけてる?
俺はこんなクソ設計の塊みたいなダブスタ言語使いたくないって思っちゃったわ
2024/10/17(木) 08:37:23.18
何がダブスタと思ってるのかわからない
何がわからないのかわからない
キミが使いこなせないのはわかった
がんばれー
2024/10/17(木) 08:46:55.28
一定の複雑さをオーバーすると発狂する低能
2024/10/17(木) 12:46:09.51
>>4
だから値型と参照型でlet a = bの振る舞いが違ってくるでしょ
値型の場合bは再度使えるけど参照型の場合bはprintfでも使えない(コンパイルエラーになる)
同じコードで
let a = str bと
let a = String::bで比べてみたらわかるよ
2024/10/17(木) 12:47:07.69
ちなみにわかってると思うけどstr型は値型でString::型は参照型なタコ
2024/10/17(木) 18:42:30.86
所有権の考え方ってRustやるなら変数より前に習うぐらいじゃないの?
2024/10/17(木) 18:46:57.12
すまん文法間違えてた
正しくはstrは &str
String::bは std::string bだ
2024/10/17(木) 18:47:39.35
>>8
そのうえで値型と参照型で振る舞いを変えるダブスタ言語だなぁって思いました。
2024/10/17(木) 18:49:05.98
これは値型だからこいつに代入しても使える~
こいつは参照型だからもうこの変数使わないどこ~
とかやってんだろうなw
2024/10/17(木) 18:53:47.00
用途に応じて使う型を変えることの何がダブスタなんだろう・・・
2024/10/17(木) 18:54:00.69
単純作業で修行しなはれ
値を代入したり譲渡したり何なり
2024/10/17(木) 19:06:20.93
値型なんてあったかな
プリミティブ型とは違うのか
2024/10/17(木) 19:07:33.26
>>12
普通のプログラミング言語はちがうけど
値型だろうが参照型だろうが変数が使えなくなることなんて割と無い
2024/10/17(木) 19:07:57.66
>>14
それがいわゆる値型
メモリそのものに値が入ってるから値型
2024/10/17(木) 19:08:52.19
>>15
所有権を移してるんでないか?
2024/10/17(木) 19:08:57.54
参照型はアドレスが入ってる
2024/10/17(木) 19:09:35.85
>>17
だからその所有権移したりコピーした値を渡したりダブスタだろって言う話
2024/10/17(木) 19:12:11.84
所有権の管理を俺様ではなくたかがプログラム言語ごときが勝手にやるのが気に食わないっていうのなら言ってることはわかるけど
ダブスタと言われると意味が分からない
2024/10/17(木) 19:13:49.52
>>20
ダブスタだろ
値型と参照型で振る舞い変えるんだから
2024/10/17(木) 19:14:02.74
ここで言う値型が、所有権を失ったり失わなかったりコロコロ挙動が変わるならまあダブスタだけど
参照だって定義してるんならそりゃ動きも変わるだろう
23仕様書無しさん
垢版 |
2024/10/17(木) 19:17:34.52
そこまで理解していて「わからない」とか言ってるのがわからない
2024/10/17(木) 19:26:04.18
>>23
いやなんで2つの振る舞いにしたの?ってなるくね?
値型もメモリコピーしないで参照型のように値渡したら開放するでいいじゃん
25仕様書無しさん
垢版 |
2024/10/17(木) 22:33:51.75
Rustに値型と参照型という区別はないぞ
参照という概念はあるけど、これは &i32 なども作れるもので、「整数なら値型」といったものではない
どちらかというとC++に近い

let a = b でbが所有権を失うかどうかは、その型が「コピー可能かどうか」で決まる
26仕様書無しさん
垢版 |
2024/10/17(木) 23:08:56.00
Rustでグラフィックやると面白い
まぁCでもC++でもいいけど
2024/10/17(木) 23:56:52.39
>>25
メモリコピーできるかできないかだろ?
でそのメモリコピーできるかできないかで変数の振る舞いを変えるの?
2024/10/17(木) 23:57:39.64
>>26
でもあれって結局DirectXラップするだけなのでは?
それともDirectXすら使わずに1から作るってことかい?
2024/10/18(金) 00:06:57.13
例えばめちゃくちゃ誇張した表現にはなるが

fn main() {
let a=3.402823e+38;←便宜上float16の最大値とする(4byte)
Hoge(a);←Rustわかってないやつはここでaが移譲されたと勘違いする
let b=3.402823e+38;←もう一度使いたいがために宣言する
Hage(b);
.
.
.
}

こんな感じのことやってたらチリ積でメモリリークしてないか?(↑の例をだと8byteのメモリリーク)
aやbが解放されないから
2024/10/18(金) 00:08:11.83
コピーするかしないかって相当重要なポイントだと思うんだけど
なんだろうWeb系ばっかやってるとそういうのどうでもいいと思うのかね?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況