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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
855
(1): デフォルトの名無しさん [sage] 2024/07/14(日) 12:54:55.73 ID:JssLuzWj(4/4) AAS
>>850
850(1): デフォルトの名無しさん [sage] 2024/07/14(日) 10:33:24.33 ID:iqWqiKXK(6/10) AAS
そして万能型のfoldを呼び出す形で
このような特定の型の構造に依存しない抽象的なコードが
trait Iteratorに用意されているため使えます

fn reduce<F>(mut self, f: F) -> Option<Self::Item>
where
 Self: Sized,
 F: FnMut(Self::Item, Self::Item) -> Self::Item,
{
 let first = self.next()?;
 Some(self.fold(first, f))
}
python の reduce は初期値を [0] にするのも任意に設定するのも
同じ reduce という名前でいけるのが
Rust だと reduce と fold で使い分ける必要があるということね
Rust が面倒だと言うことは理解した
856: デフォルトの名無しさん [sage] 2024/07/14(日) 13:21:58.79 ID:iqWqiKXK(9/10) AAS
>>855
そういうことではないよ
RustではOption型やResult型でエラーや異常値を含めて正しい状況を値として得られるんだよ
例えば長さ0で初期値なしの時に
Pythonだとエラーだよね
Rustは常に値として返してくれて今回はOption<Self::Item>型
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 2.160s*