[過去ログ] Rust part24 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
141: デフォルトの名無しさん [sage] 2024/06/15(土) 04:55:57.02 ID:ao0/TxVC(1) AAS
>>138
138(2): デフォルトの名無しさん [] 2024/06/14(金) 23:46:55.69 ID:49Oug44p(2/2) AAS
ゲームはまずdirectxやopenglとかがrustで書き直されないことには何も始まらんと思うわ
WebGPUの参照実装であるwgpuを知らんのか。
ライブラリ使う側のIFはだいぶsafeだよ。
まぁ、バックエンドは結局、valkanやOpenGLになるけど。
191: デフォルトの名無しさん [sage] 2024/06/16(日) 10:13:30.02 ID:R4/urzCg(3/3) AAS
>>173
173(1): デフォルトの名無しさん [sage] 2024/06/16(日) 01:00:26.12 ID:d8h4GcS0(1) AAS
複オジのレスはいつも通り8割は嘘だな
ほんそれ
338: デフォルトの名無しさん [sage] 2024/06/24(月) 18:41:27.02 ID:jX1oxSab(3/5) AAS
>>334
334(2): デフォルトの名無しさん [sage] 2024/06/24(月) 16:21:31.19 ID:jX1oxSab(2/5) AAS
>>333
//1→2
//2→1
//3→3
(1) 四則演算のみ:
y=2*(x-2)(x-3)+1*(x-1)(x-3)+3*(x-1)(x-2);
規則は、y0*(x-x1)(x-x2)のようなパターンを
サイクリック(循環的)に繰り返す。

(2)三項演算子、その1
y=x==1?2:(x==2?1:(x==3?3:0));

(3)三項演算子、その2
y= (x==1?2:0) + (x==2?1:0) + (x==3?3:0);
>y=2*(x-2)(x-3)+1*(x-1)(x-3)+3*(x-1)(x-2);
間違ったわ。
多分、
y=1*(x-2)(x-3)-1*(x-1)(x-3)+3/2*(x-1)(x-2);
だと思うわ。
理由は大体分かると思うけど。
602
(1): デフォルトの名無しさん [] 2024/07/06(土) 22:06:51.02 ID:PIuhFLFS(1) AAS
Rustってオブジェクト指向言語ではないということですが、それでも困ることはないんですか?

これが最後の言語だ!とRustって名付けたんですか?
673
(2): デフォルトの名無しさん [sage] 2024/07/09(火) 12:57:46.02 ID:aoAam1/W(1/5) AAS
>>672
672(1): デフォルトの名無しさん [sage] 2024/07/09(火) 12:39:43.65 ID:YflJELWV(1/6) AAS
>>668
φ(x) を型 T のオブジェクト x に関して証明可能な性質とする。このとき、φ(y) は型 T のサブタイプ S のオブジェクト y について真でなければならない。

φは主に事前条件・事後条件・不変条件で、言語によっては例外条件も入ってくる。
この観点からはRustのTraitは力不足。なんでLSPを引き合いに出せるのかわからん。
自分でそれを書いておいて理解できていないのかよ
そこに明記されてるようにTもSもオブジェクトを持つ具体型についての話だ
Rustのtraitは具体型ではないため関係ないぞ
そしてtraitを実装する各型の間にはサブタイプの関係はないためそこも対象とならない
そこを理解できずに「RustのTraitは力不足」とデタラメを吹聴するのは恥ずかしい
721
(3): デフォルトの名無しさん [] 2024/07/10(水) 13:29:52.02 ID:kPG9kWdt(1/2) AAS
>>701
701(2): デフォルトの名無しさん [] 2024/07/10(水) 00:10:24.05 ID:HryWiaEt(1/4) AAS
過去に見た (rust以外の) プロジェクトの失敗例だと
・もともとFooというクラスがあった
・新しく作るBooクラスについて、Fooクラスと同じように扱えれば既存コードをあまり変更しなくても済むぞ!と誰かが気づいた
・その人物は Foo クラスのメソッドを元に IFoo インタフェースを定義し、それを Foo と Boo に実装させた
ことから混沌としたコードが生まれた例がある

この失敗をやらかした人は、Rustでも同じように「既存の Rectangle クラスを元に IRectangle トレイトを作り、それを Rectangle と Square に実装させる」ことをやりかねない

Rustではそれが不自然なパターンになりやすいし、起こりにくくはあるけど、本質的には設計の問題
そのやり方がなぜ悪いのか理解できませんので、教えてください。
例えば、C++だと、以下の様にするのも別に悪いやり方ではないような
気がするのですが。
class Number {・・・};
Number add(Number &a, Number &b);
Number mul(Number &a, Number &b);
class Integer : public Number {・・・};
class Rational : public Number {・・・};
845: デフォルトの名無しさん [sage] 2024/07/14(日) 07:39:51.02 ID:iqWqiKXK(3/10) AAS
未知のIteratorであっても重複コードを書くことなく自動的にこのfoldメソッドが使える
848
(1): デフォルトの名無しさん [] 2024/07/14(日) 10:13:20.02 ID:aq5pPuoi(1) AAS
>>847
847(1): デフォルトの名無しさん [] 2024/07/14(日) 09:23:36.10 ID:JssLuzWj(1/4) AAS
fold って next とどうちがうん
nextはイテレーターを一つ進めるもの、foldやreduceはイテレーターに対して畳み込みを行うもの
例えば「配列内の全ての数値を足し合わせる」とか「全ての数値を掛け算する」「配列内の文字列を全て連結する」いった操作を行うものだよ

この類のものは他の言語でも使われるし、簡潔なコードを書けるようになるから知っておくと良いよ
配列等のコンテナに対して一般に map, filter, reduce と呼ばれる操作があって、そのうちreduceは「要素を畳み込んで1つの値にする」もの
畳み込む方法を関数で渡すもので、概念的には [1, 2, 3].reduce(add) や [1, 2, 3].reduce(multiply) のような形になる
渡す関数は関数のほかクロージャ (言語によってはラムダ式とも) も使える
こんな感じに抽象化するとfor文を使わなくて済むし、何をやってるかが明確になる
976: デフォルトの名無しさん [sage] 2024/07/26(金) 00:25:09.02 ID:/65SSmn2(1/2) AAS
OnceLockからLazyLockへ移行すると
変数宣言と初期化関数が離れていた可読性の問題が解決するとともに
例えばget_or_initを一箇所にするために一つ関数を用意したりするなどしていた手間も省けるようになるね
そして何よりも最大のメリットはDerefによりアクセスできる利便性
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.045s