class A { def func(): Unit = {} } があって class B extends A {} としたとき、B.func を private 化するってできないのかにゃ? #scala
2010-05-31 02:07:29@backpaper0 お!scala er が起きてる!すみません、お忙しくないならこれ→ http://twitter.com/PG_kura/status/15053549659 についてご存知かどうか返信頂けませんでしょうか?
2010-05-31 02:13:54それできちゃうとリスコフ置換原則が QT @PG_kura: class A { def func(): Unit = {} } があって class B extends A {} としたとき、B.func を private 化するってできないのかにゃ?
2010-05-31 02:15:30あ、NGですかー。普段 C++ 使ってて、そっちでできるもんだから出来たりしないかなーと思って post したです。ありがとうございます!RT @cknbstr: それできちゃうとリスコフ置換原則が QT @PG_kura: class A { def func(): Un...
2010-05-31 02:17:32@backpaper0 C++ ではできてしまいます。Java はこういう C++ の甘いところ(他に検査例外とか)をきれいにした印象ですよね。出来ない方が自然だと思います。
2010-05-31 02:25:07@cknbstr a.func()があったとして,可視性がaの型から静的に決定するとしたらfuncは呼出可能,そして実行時にaがBのインスタンスに動的に束縛されていれば,Bのfuncの実装が使われる,と.
2010-05-31 02:30:24@cknbstr で,Bのfuncの実装の事前条件がAのfuncのものと等しいかより弱く,事後条件が等しいかより強ければ,LSPには違反しないんじゃないですかね
2010-05-31 02:32:27@uskz def callFunc( val a: A ) = a.func(); というプログラムがあったとして、B extends A ならばこのプログラムは def callFunc( val a: B ) = a.func(); と置換できる、というのが LSP でわ?
2010-05-31 02:39:01失礼ww http://ideone.com/6scLC の「ここから」「ここまで」の部分は、A extends B であるなら a = new B(); b.func(); と置換できるのが LSP ではないかと。 RT @uskz: ぎゃーScalaの構文がまったくわからない
2010-05-31 02:44:57@PG_kura あれ?class B : A { }; A a; B b; f(A& x); とあった時に,f(a)をf(b)としても正しく動作しないといけないってのがLSPじゃありませんでしたっけ?
2010-05-31 02:47:15@uskz ん~、それは LSP に含まれるのかどうか・・・正直自信無いですねー。しかしここ http://bit.ly/2L5g9E を見る限り先の僕のやろうとしたことは違反になるかと。
2010-05-31 02:50:26@PG_kura What is wanted here is something like the following substitution property: If for each object o1 of type S there is an object o2
2010-05-31 02:52:13@PG_kura of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is substituted for o2
2010-05-31 02:52:24@PG_kura then S is a subtype of T. -- Barbara Liskov, “Data Abstraction and Hierarchy,” SIGPLAN Notices, 23,5 (May, 1988).
2010-05-31 02:53:10いや、冒頭の日本語の部分だけでいいです。RT @uskz: @PG_kura おっとこの1999年の読めばいいのですね
2010-05-31 02:57:42@PG_kura インターフェースの可視性が派生先でpublicからprivateに変更されて http://twitter.com/PG_kura/status/15055433392 のa = new A();をa = new B();に置き換えても,可視性の決定と(続く
2010-05-31 03:03:14