[過去ログ] Rust part24 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
712(1): デフォルトの名無しさん [sage] 2024/07/10(水) 02:33:48.76 ID:H5PXuDT2(1) AAS
>>707707(2): デフォルトの名無しさん [sage] 2024/07/10(水) 01:13:16.99 ID:1XduDtMr(1/4) AAS
>>688
>>679の言う「LSPが対象としている遺物における諸問題に悩まされずに済むように」するためには必要なんだよ。
LISKOVのA behavioral notion of subtyping でも「include exception」と言っているだろ。
まぁ、panicが例外にもなれないそびえ立つクソだからRustから排除すべき、と言うなら同意するが。
LSPでは例外を返すなら基底型で返す例外とそのサブタイプのみに限られるとしか言及していない
例外で値をキャッチできなくなることや値を返す抜け道になることを防ぐためだ
ちなみにRustのpanic!では値を返すことはできなくてpanicメッセージのみ
そして普通のプログラムでpanicをキャッチすることはない点など前提が全く異なる
Rustで従来の例外を扱うケースはpanic!を使わずにResultの返り値で返す
したがってpanic!はLSPで出てくる例外の話に該当しないだろう
728(1): デフォルトの名無しさん [sage] 2024/07/10(水) 16:42:16.40 ID:aw6hROvm(1) AAS
>>712
>例外で値をキャッチできなくなることや値を返す抜け道になることを防ぐためだ
違うよ
勝手な想像でLSPを誤解釈しないで
substituteされる型Tに対して定義された仕様上(契約上)の振る舞いを
substituteする型Sが満たしてなければLSP違反
つまり仕様上panicを禁止したトレイトの関数を
panicする関数でimplしたらLSP違反
LSPではあくまで”仕様上定義された振る舞い”が問題
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.043s