[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/01 05:53 / Filesize : 267 KB / Number-of Response : 1023
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Rust part10



1 名前:デフォルトの名無しさん mailto:sage [2021/04/02(金) 21:38:04.11 ID:L7IeSfpL.net]
Mozilla発のRust言語のスレ

公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust

Web上の実行環境
https://play.rust-lang.org

日本語の情報
https://rust-jp.rs/

前スレ
Rust part9
https://mevius.5ch.net/test/read.cgi/tech/1598112455/

373 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 12:40:02.43 ID:K/HFYMcp.net]
Animal から、C++ の継承のようなことをした構造体(?)を Dog とした時、
Box<T> a; で T を Animalのようなものにして、a には、実際には Dog
への参照を入れるようなことは出来ますか?

374 名前:はちみつ餃子 mailto:sage [2021/04/29(木) 13:12:17.47 ID:x0Vd7BP9.net]
>>368
dyn かな?
完全に一致する機能というわけではないけど、
Rust ではトレイトに dyn キーワードを付けると (C++ で言うところの) 抽象クラスのように機能する。

375 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 13:33:28.09 ID:K/HFYMcp.net]
>>369
https://stackoverflow.com/questions/53897315/rust-polymorphic-calls-for-structs-in-a-vector
↑には、Questionの人の書いたのももしかしたら動作するかも知れないけど
Answerの人に従えば、以下のようにするのが正しいのかな?

trait Function {
fn value(&self, arg: &[f64]) -> f64;
}
struct Add {}
struct Multiply {}
impl Function for Add {
fn value(&self, arg: &[f64]) -> f64 { arg[0] + arg[1] }
}
impl Function for Multiply {
fn value(&self, arg: &[f64]) -> f64 { arg[0] * arg[1] }
}

impl Add {
fn new() -> Add { Add {} }
fn new_boxed() -> Box<Add> { Box::new(Add::new()) }
}
impl Multiply {
fn new() -> Multiply { Multiply {} }
fn new_boxed() -> Box<Multiply> { Box::new(Multiply::new()) }
}
fn main() {
let x = vec![1.0, 2.0];
let funcs: Vec<Box<dyn Function>> = vec![Add::new_boxed(), Multiply::new_boxed())];
for f in funcs {
println!("{}", f.value(&x));
}
}

376 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 17:34:51.47 ID:HuHtKfqb.net]
C++でis-a関係の継承使うデータはRustだとenum使う方が単純になるケースもある

struct AnimalData { ... }
struct DogData { ... }
struct CatData { ... }

#[non_exhaustive]
enum Animal {
Dog (AnimalData, DogData),
Cat (AnimalData, CatData),
}

この方法にも色々欠点はあるけど(クレートの外で新しいAnimalを追加できないとか)
trait使う抽象化が大袈裟だと思ったら考えてみて

377 名前:デフォルトの名無しさん mailto:sage [2021/04/29(木) 17:51:11.31 ID:GXfM8nV1.net]
>>370
継承とは違うけど
そのユースケースはfnかFn使えば十分じゃないの?

let functions: Vec<fn(f64, f64) -> f64> = vec![|x, y| x + y, |x, y| x * y];
for f in &functions {
println!("{}", f(1.0, 2.0));
}

378 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 01:35:27.25 ID:7VhEvZ/Q.net]
>>372
簡単な例として書いただけで、同じ表示結果を得ることが目的ではないので
そういうこととは趣旨が違う。
さまざまな種類の多態なオブジェクトを1つのリストの中に入れるということは
オブジェクト指向に置いて基本的な概念の一つで、Polymorphismの基本なので、
継承的なものを使わずに同じ結果を書けたとしてもそれは違う。

379 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 15:35:29.77 ID:dTeJW22U.net]
ポリモーフィズムを理解してないようなやつでもRustをはじめるようになったんだな

380 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 17:06:26.25 ID:8uDUVNfy.net]
c++と同じで難しくてランタイム速度最強てなところが厨を呼び寄せてる

381 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 18:24:08.88 ID:K785SuXO.net]
C++やってたら配列のインデックスアクセスが安全かどうかや
ディスパッチがスタティックかどうかを普通気にするよね



382 名前:デフォルトの名無しさん [2021/04/30(金) 20:47:52.42 ID:eR/nI2gV.net]
グーグルやMSが「Rust」言語でOS開発、背景に国家による諜報活動の影=日経 xTECH中田敦

背景に国家による諜報活動の影っていう根拠が1つも示されてないんだけど、こいつの言ってることマジなん?
それとも日経新聞のおなじみの「飛ばし」によるクリック集め?

383 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:05:00.75 ID:MgEdsK0p.net]
GAFAMって言いたいだけ

384 名前:デフォルトの名無しさん mailto:sage [2021/04/30(金) 21:27:01.84 ID:8uDUVNfy.net]
マイクロソフトがwindows書くのにc++使って後悔した話も知らん層が今も同じようなことやろうとしてんだろ。。
バカは歴史に学ばない。

385 名前:デフォルトの名無しさん [2021/05/01(土) 00:25:31.33 ID:6VZJr73m.net]
これ見てたら、いきなり日本語で「ネコ」って出てきてびっくりした
https://www.programming-idioms.org/cheatsheet/Rust
実は、お前らの中の誰かが書いてんのか?

386 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 05:47:22.98 ID:5xLRGYfU.net]
>>380
https://www.publickey1.jp/blog/21/http35firefoxmozillaquicrustneqo.html
今、プログラムやる若い層じゃアニメとアニメに出てくる簡単な日本語は基礎教養だぞ
github見たらアニメキャラアイコンだらけだ

387 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 08:00:51.92 ID:GEnkdmRT.net]
NANI

388 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:02:13.98 ID:1WejqaZh.net]
>>379
>マイクロソフトがwindows書くのにc++使って後悔した話
興味有るので詳しく :

389 名前: mailto:sage [2021/05/01(土) 17:21:37.61 ID:m+tkSw04.net]
>>379
流出したソースを見る限り、MS は C で Windows を書いていたようですよ‥‥

390 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:53:57.44 ID:/Wzn7OVr.net]
そういえば初期WindowsのWindow管理のサンプルコード見た記憶がある
ツリーリンクリストが構造体に埋め込む形で自作されてた

391 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:54:25.77 ID:/Wzn7OVr.net]
コードの8割方コメントだった



392 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:31:00.53 ID:/RYlgP4n.net]
The Windows Research Kernel AKA WRK
https://github.com/zhuhuibeishadiao/ntoskrnl

393 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:42:02.70 ID:3kB7D+rP.net]
9割がCか

394 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 09:51:42.31 ID:3kB7D+rP.net]
まあLinuxもCと一部アセンブラだから似たようなものか

395 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 12:27:53.91 ID:Jc9e5ibu.net]
当時の言語状況からして他に選択肢なんかなかったと思うがねぇ。
他の言語選択してたら駆逐されてた可能性すらある。

396 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 12:37:35.62 ID:anCj3LhS.net]
NT kernelが開発されたのが1990年代か
C++も既にあったがまだ浸透してなかったかな

397 名前:デフォルトの名無しさん [2021/05/02(日) 13:45:15.23 ID:c1rmI49h.net]
チュートリアルやってたらトレートオブジェクトってのの説明が意味不明級だったぜ
https://tourofrust.com/82_ja.html
なんじゃこりゃ

398 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 14:35:17.11 ID:n4dQrb8u.net]
>>392
Javaの知識があれば
 trait object: interfaceとして渡されたオブジェクト
という感じで説明できるけど何か使い慣れた言語はあるかね

399 名前:デフォルトの名無しさん [2021/05/02(日) 15:05:16.82 ID:c1rmI49h.net]
>>393
もしかしてExistential Container(和訳不明)が独立のオブジェクトとして括り出さている感じですか?
なおC#が一番使い慣れているのですが、この範囲ではJavaと大きく違わなさそうでしょうか・・・・

400 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:36:14.52 ID:hSgvj4Ff.net]
>>392
The Bookの該当箇所を読むのを勧める
Java/C#のインターフェースと基本的には同じだけど違う部分もある
https://doc.rust-lang.org/book/ch17-02-trait-objects.html

その少し後に出てくるBoxのコードに出てくる
`animals: Vec<Box<dyn NoiseMaker>>`の
Box<dyn NoiseMaker>がTrait Object

Trait Objectは動的サイズの型なので&NoiseMakerやBox<dyn NoiseMaker>のようにポインタの形になる
そのチュートリアルは前後のページとどう関係があるのかについて説明がほぼないのでわかりにくいかもね

401 名前:はちみつ餃子 mailto:sage [2021/05/02(日) 15:50:22.98 ID:VAfyzxcR.net]
他の言語の概念と対応付けるよりはそれ自体として理解したほうがいいのは確かだと思う。
(理解できずに行き詰まるくらいなら雑な理解でも一旦前に進んだほうがいいかもしれんけど。)

言語機能ってひとつだけを取り出して使えるものじゃなくて、他の言語機能との連携の中で活きてくるものだから
個別の言語機能を他言語の言語機能と対応付けて理解しても綺麗に繋がらない感じがする。



402 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 15:58:09.22 ID:TmCNx2ML.net]
https://doc.rust-lang.org/reference/types/trait-object.html

こっちじゃ`dyn Trait`のことをtrait objectと呼んでいるようだけど
というか俺はこれだと思ってた
Traitを実装する具体型の値のアドレスと、その型に対するTrait実装のvtableの組

403 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 16:04:49.31 ID:n4dQrb8u.net]
>>394
C#はあまり詳しくないけど、例えばListのAddRange関数の引数の(IEnumerable collection)が近いかな
AddRangeにはIEnumerableを実装してればどんな型でも渡せるはず(ArrayList、HashSet, etc)

これをAddRangeの視点で見ると、渡されたcollectionが実際に何の型かは分からないけど
IEnumerable(interface≒trait)を実装してることは分かってるから
そのGetEnumeratorを呼んでIEnumeratorを受け取ってそこから取り出せる要素を全部追加すれば
目的の動作は果たせることになる

このAddRangeの引数のcollectionがIEnumerableトレイトを実装したtrait objectって感じ

404 名前:デフォルトの名無しさん mailto:sage [2021/05/02(日) 17:25:27.83 ID:hSgvj4Ff.net]
>>397
正確に言うとリファレンスに書いてる通りdyn Trait型のオブジェクトがTrait Object
&dyn TraitやBox<dyn Trait>はTrait Objectを指してるfat pointer

でも実用上は&dyn TraitやBox<dyn Trait>のfat pointerのこと自体を
Trait Objectというものとして理解したほうがわかりやすいので
The Bookや他の解説書でも区別してないのが多い

405 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 09:09:00.34 ID:AyvebyYK.net]
>>76
Visual Rust#やろ

406 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 11:04:52.91 ID:L2uysNOu.net]
https://marketplace.visualstudio.com/items?itemName=vosen.VisualRust

407 名前:デフォルトの名無しさん mailto:sage [2021/05/03(月) 15:28:19.67 ID:lWPqbdGD.net]
囲い込んでブラックボックス強要するあたりはMSと相性いいかもな

408 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 15:41:01.40 ID:6lvPuDrb.net]
facebookも財団に参加したのか
appleも時間の問題かな

intelとかのCPUメーカーにも参加して欲しい所だが

409 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 17:15:37.01 ID:lMvsmKDJ.net]
CPUメーカーが参加するとどういうことが嬉しいの?
LLVMなら分かるんだけど

410 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 20:03:06.80 ID:6lvPuDrb.net]
まあ元intelのエンジニアも開発に参加しとるけどね

411 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 20:33:44 ]
[ここ壊れてます]



412 名前:.63 ID:PCq3WtR4.net mailto: え?脆弱で有名なあのインテル?
ヤバいじゃないですかぁ
[]
[ここ壊れてます]

413 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 21:04:23.81 ID:mgj/rIpW.net]
rustが低レイヤーの開発言語としては覇権取りそうね
今から勉強しとくのが良さそう

414 名前:デフォルトの名無しさん mailto:sage [2021/05/04(火) 22:09:05.61 ID:mvlmOZ0b.net]
低レイヤーの仕事をしたことないってのがよくわかるわ。

415 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 00:03:56.29 ID:UOumGkwv.net]
>>405
エンジニア個々人が参加するのは普通にあると思うんだけど
企業として支援することにどんなうまみがあるのかなと思って

ただ改めて思うとintelもソフトウェアたくさん出しててrust使う旨みはあるから支援する意味はありそうだね

416 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 01:46:02.42 ID:E1emjEBd.net]
SHやArmのRustコンパイラをメーカーが出たらガチ

417 名前:はちみつ餃子 mailto:sage [2021/05/05(水) 03:09:13.31 ID:o0iQ7lyN.net]
うまみっていうか、それが上手くいくかどうかなんて事前にはわからん。
ほどほどに有用そうなものに支援してたらどれかひとつくらいはいい感じって程度の話だろ。

418 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 05:31:11.89 ID:rumk0idO.net]
協力し合うと同時にあまり勝手しないように牽制するのも目的なので

419 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 12:35:13.44 ID:UNdhfIGe.net]
どうも頭の悪い輩が多いなと思ってたけど、
この言語、ある程度まではスクリプト的に書けるからなんだな。。
なんとなくおかしなこと言ってる奴の感覚がわかってきたわ。

420 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 13:37:38.31 ID:ZpSbA1Y5.net]
>>413
> この言語、ある程度まではスクリプト的に書けるからなんだな。。
短く簡単に書けるようにするのはRustの課題の一つだと思ってるので、どういう観点から「スクリプト的に書ける」とおっしゃるのか伺いたいです
よく比較に上がるC++よりはよっぽど記述量多くなるよね?

421 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 14:30:15.37 ID:UNdhfIGe.net]
そりゃautoなんかを使いまくった最近のスクリプト厨のc++ならそうだろうけれど、
普通に仕事で読むc++コードはそういう感じではないからね。
てかc++と一口に言っても年代で全く別言語だわ。
そういうスクリプト的な書き方をした場合、rustのがc++より快適に感じるのはまあわかるよ。
問題もrustのが少なく感じる。そういう書き方だけしてる場合はね。



422 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 14:59:14.54 ID:ZpSbA1Y5.net]
炎上学習法かってくらい何も理解してない感じでワロス

423 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:13:12.13 ID:UOumGkwv.net]
autoと動的型付けの区別が付いていない...?

424 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:19:43.76 ID:nBZStdai.net]
型再構築なんてむしろ厳格に型付けされた言語から生まれたんだが

425 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:21:51.15 ID:2WIXJ/st.net]
C#でvarキーワードが導入された時も
基本型の変数にvar使うのやめましょうみたいな規約を
意味不明な根拠で良い規約と信じて導入しようとする
おかしな人達がそこら中に居た
後にEffective C#かそこらの書籍で
ローカル変数はvar使えと明確に書かれるようになって
老害ザマァと思ったものだ

426 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 15:46:10.02 ID:sMGymnD4.net]
正義が世俗の愚劣さに屈した

427 名前:はちみつ餃子 mailto:sage [2021/05/05(水) 15:47:19.58 ID:o0iQ7lyN.net]
ローカル変数の場合は型がすぐ隣に書いてあるような状況だろうからな。

428 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:17:27.41 ID:UNdhfIGe.net]
ほらね。
好き勝手な自分流でコード書いてるだけで人のコードを読んでないのが丸わかりなコメントしてても
全く気づかないバカしかいない。

429 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:25:26.72 ID:GNJam4rN.net]
>>421
ようするに型情報を二重に書いてるようなものだよな
情報の多重化であり
小さなDRY

430 名前:エ則違反
こんな簡単な理屈を理解出来ない奴が不思議
[]
[ここ壊れてます]

431 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:30:24.49 ID:sMGymnD4.net]
書かれておらずメソッドで戻り値を取得するような場合
C#もJavaも型で呼び出し先が変わる仕組みなので
意図せずに処理の流れまで変わってしまう



432 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:44:03.35 ID:GNJam4rN.net]
>>424
お前は日本語勉強しろよ
普通に読解不能なんだよ

必要な所には型を書く
当たり前
不要な所に書いてると
「何故書いてるのだろうか?
何か理由を見落としてるだろうか?」
と注意深いプログラマを考えさせるのでエネルギーの無駄

433 名前: mailto:sage [2021/05/05(水) 16:50:12.99 ID:tRoHSHAj.net]
>>416
>炎上学習法

懐かしい言葉ですね‥‥

434 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 16:59:13.24 ID:sMGymnD4.net]
>>425
varにするようになったら全部varにするだろ?

435 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 17:40:56.63 ID:iUhohRzs.net]
>>416
相手してるお前も同罪やぞ
すぐ見分けつくだろ

436 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 18:09:53.05 ID:UOumGkwv.net]
VSCode + rust-analyzer だとletやメソッドチェーンのところに型が表示されるし
今時の開発環境使っていればローカル変数の型がぱっと見で分からなくて苦労することは少ないのでは

437 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 18:14:24.50 ID:GNJam4rN.net]
>>427
何を言っとるんだお前は?
右辺値と同じ型で「困る」時は型を書くに決まってるだろ
下手するとvarの仕様も理解せずに混乱した事を書いてんじゃないだろうな

438 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 18:51:20.46 ID:cJbqSzge.net]
ゲェーQZ居着いてんのかよこのスレ
バカなくせに出しゃばりでウザいからC++スレから出てくんなよ

439 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 19:01:51.22 ID:sMGymnD4.net]
>>430
後から右辺値の型が変わったら気が付かないうちに影響が波及するじゃん

440 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 19:41:05.57 ID:E1emjEBd.net]
var xの型が何であるかはxの初期化のときただ一度きりの右辺の型で決まるんジャネーノ
だとしたら後から右辺値の型が変わることに関して
varの導入で傷口が広がったことにはならない

441 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 19:44:32.97 ID:E1emjEBd.net]
二回目以降の右辺値はxに対する代入でしかありえない
それらはxに対して(暗黙の型変換等を経て)代入可能ならコンパイルが通るし、
代入不可能ならエラーになる。
xの初期化時にvarを使おうが使うまいが(明示的に型を書こうが)変わらない話



442 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 20:38:12.35 ID:UOumGkwv.net]
せめてletの話をしろよ

443 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 20:48:36.67 ID:vgXZGrp9.net]
RustのletはJS由来? それともHaskell?

444 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 21:09:59.09 ID:1EwqoC8k.net]
JavaScriptにもletあるけど語源調べたら普通に英単語のletで短縮形ってわけじゃないらしい

445 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 21:24:20.68 ID:ra+BilqN.net]
BASICの時代からletはあったけどな

446 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 21:31:43.51 ID:ZsCzZm1J.net]
letはlisp系から始まったイメージ。

447 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 22:26:24.94 ID:vWJ975z5.net]
RustのletはML系由来だろ

448 名前:デフォルトの名無しさん mailto:sage [2021/05/05(水) 22:44:48.04 ID:UOumGkwv.net]
最初のrustcはocamlで書かれてたくらいだしML系の影響は色濃そう

449 名前: mailto:sage [2021/05/05(水) 22:49:49.94 ID:tRoHSHAj.net]
>>431
https://mevius.5ch.net/test/read.cgi/tech/1610096040/839

450 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:02:12.67 ID:SpjdL+PT.net]
let mut にするか var にするかの決定で、
目立たないけどRustに貢献した人という記事が最近書かれたので貼っとく
https://brson.github.io/2021/05/02/rusts-most-unrecognized-contributor

451 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:05:25.16 ID:ut0g6JOd.net]
>>443
3行でまとめて



452 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:35:02.38 ID:SpjdL+PT.net]
デイブ・ハーマン(Dave Herman)というECMAScript委員会のMozillaの代表者の人がいました。
リポジトリ上のコミットログでは目立ちませんが、彼の好みがRustチームの好みを作り、チームの組織と維持に重要な役割を果たしていました。
彼はチームの決定をほとんど穏やかに受け入れていましたが、let mut と var のどちらにするかについては var を使うというチームの決定に同意しませんでした。

453 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:36:11.91 ID:V2I8vwdu.net]
>>421
でも、
BYTE c = 'a';

let c = 'a';
では間違い易さが違う。後者は、int か BYTE か SBYTE か分からない。

454 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:37:37.69 ID:V2I8vwdu.net]
Rustだと、明示するには、
let c:i8 = 'a';
とキータイプが多くなってしまうな。

455 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:40:47.77 ID:V2I8vwdu.net]
例えばの話、演算子も優先順位が決まっているので、
if ( (a >= 5 && a <= 10) || (b>=10 && b <=20) ) {・・・}
見たいな条件も、優先順位の括弧を省略できるかも知れないが、勘違いや
記憶違いを防ぐために書いた方がいいと言われている。
int c = 'a';
char c ='a';
auto c = 'a';
ではやはり、autoはバグの原因になりそう。

456 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 01:47:50.96 ID:V2I8vwdu.net]
それと、型を明示した方が後から見たときにプログラマの脳内の想定もわかり易い。
float a = 1.0f;
float b = a + 5.0f;
みたいなものも、もし、
auto a = 1.0f;
auto b = a + 5.0f;
と書くと b は、double 型になってしまうかもしれないが、テストしても
間違いに気づかず、僅かに速度低下やメモリーを多く食ってしまう
かもしれない。また、思想にもよるが、1.0f などと書かずに
float a = 1;
float b = 5;
と書きたい人も居ると思う。これの方が、後から double 型に変えたときに
右辺を訂正する必要がないメリットもある。

457 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 03:19:29.71 ID:EVf7RH7G.net]
>>446
rustの文字リテラルはu8でもi8でもなくてcharな

それはそれとして型やら括弧やらを明示的に書くことは禁じられてないんだから書けばよいのでは
言語の問題というよりはコーディング規約でなんとかすべき領域かと

タイプ数が多くなるとかはデフォルトをどちらに倒すかの問題で世間の嗜好とずれてるなら多少手間がかかるのは諦めるしかない

458 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 03:21:51.36 ID:EVf7RH7G.net]
誤解を招きそうだから補足しておくとrustのcharはユニコードのコードポイントが格納される32bit符号なし整数型な

459 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 06:46:11.97 ID:AMAuzv83.net]
>>443
こういうのいいな

460 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 10:08:34.61 ID:VcsxCBNr.net]
>>445
var使おうとしてたってマジかー
let (mut a, b) = get_foo_tuple();
みたいなやつとかvarじゃ困るから必然だと思ってたのに

461 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 10:15:22.90 ID:lmEaR3VD.net]
>>445の要約の最後たぶん間違ってる
デイブ氏はキーワードを重ねるとmutableな変数の使用を躊躇させる効果が生じて
プログラマのコーディング方式の選択を咎めることになるから反対だったらしい
チームの決定は初めからlet mutで彼は(珍しく)反対したけど最終的には受け入れた



462 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 11:35:13.23 ID:hCHdFqbq.net]
つまり暗黙の型変換は癌

463 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 11:48:56.26 ID:f ]
[ここ壊れてます]

464 名前:owE0ZYM.net mailto: varでいいじゃん
あとはideが勝手に型直してくれるよ
[]
[ここ壊れてます]

465 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 11:52:26.38 ID:a37uwZNi.net]
いないいない

466 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 14:35:25.59 ID:SpjdL+PT.net]
>>454
すまん、指示代名詞の指してる先を読み違えた
デイブ氏はvar押しだったんだな

467 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 16:00:35.75 ID:acc3YL8w.net]
タイプ数で優劣を決めようとするアホとは次元が違うな

468 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 16:31:20.99 ID:q/dBsf9f.net]
タイプ数は少ない方が問答無用で良い

469 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 17:13:47.97 ID:EVf7RH7G.net]
fn, ret, cont, break の時代に回帰するか

470 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 17:27:07.40 ID:ut0g6JOd.net]
タイプ数は少ない
って基本型が少ない言語が好みなのかと思った

471 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 19:28:16.24 ID:fowE0ZYM.net]
<?rust
println!("hello rust!!");
?>



472 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 21:17:13.93 ID:O03dxxkK.net]
>>448
型を明示したってバグるくせによく言うのぜ

473 名前:デフォルトの名無しさん mailto:sage [2021/05/06(木) 22:42:35.79 ID:pupGSg3O.net]
タイプ数が少ないようが絶対良いんなら
むかしGAMEとかいうすべてのキーワードが1文字の言語があったからそれでも使え






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef