[過去ログ] Rust part24 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
688(1): デフォルトの名無しさん [sage] 2024/07/09(火) 22:44:26.63 ID:loMF79su(1/2) AAS
LSPはそんなことを要求していないよ
LSPをちゃんと読んで理解しようね
699: デフォルトの名無しさん [sage] 2024/07/09(火) 23:59:12.82 ID:loMF79su(2/2) AAS
LSPはis-a関係に対して守るべき原則
has-a関係に対してLSPの適用は論外
コード>>691691(7): デフォルトの名無しさん [] 2024/07/09(火) 22:57:23.83 ID:/lHavWP5(1) AAS
>>685
リスコフの置換原則は設計的な原則だから言語仕様で違反を防ぐことはできないぞ
悪名高い長方形・正方形の問題はトレイトがあっても起こり得る
trait Rectangle {
fn set_width(&mut self, width: i32);
fn set_height(&mut self, height: i32);
fn width(&self) -> i32;
fn height(&self) -> i32;
fn area(&self) -> i32 { self.width() * self.height() }
}
struct Square { len: i32 }
impl Rectangle for Square {
fn set_width(&mut self, width: i32) { self.len = width; }
fn set_height(&mut self, height: i32) { self.len = width; }
fn width(&self) -> i32 { self.len }
fn height(&self) -> i32 { self.len }
}
fn func(x: &mut impl Rectangle) {
x.set_width(3);
x.set_height(4);
// xが長方形であれば以下が成り立つはずだが、Square型を渡された場合に失敗する
assert!(x.area() == 12);
}
はLSPの違反例となっていない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.039s