foo: ANY
が割り当て可能なエンティティであるとします。foo := create {BOOLEAN}
の場合はどうなりますか?
BOOLEAN
(展開タイプ)がANY
(参照タイプ)に適合しないため、常に失敗します。エッフェル塔:拡張タイプはANYに準拠していますか?
foo: ANY
が割り当て可能なエンティティであるとします。foo := create {BOOLEAN}
の場合はどうなりますか?BOOLEAN
(展開タイプ)がANY
(参照タイプ)に適合しないため、常に失敗します。エッフェル塔:拡張タイプはANYに準拠していますか?
拡張型は参照型に準拠しています(他の適合性要件を満たしている場合)。したがって、あなたが言及している例はうまく動作します。また、foo := True
と書いても問題ありません。
そのような再付着後の主な違いは、タイプANY
のエンティティbar
がある場合、割り当てbar := foo
はなく、同じ参照、bar
ブールオブジェクトのコピーを添付します、すなわち、拡張型のコピーのセマンティクスが保持されています。したがって、後でfoo
に添付されたオブジェクトの値が変更された場合、bar
は変更されません。
元の質問に答えて、BOOLEAN
はANY
に従います。
'' foo:INTEGER_8_REF'なら、 'foo:= create {INTEGER_8}'を実行できますか? – g4v3
@ g4v3、はい、これは問題ありません。ところで、回答が満足できるものであれば、それを受け入れたものとしてマークして、SOユーザが質問に答えていることを確認することができます。それ以外の場合は、詳細をリクエストすることもできます。 –
はい、それは私が以前に受け入れられたものとしてマークしていなかったことの本質的な理由です。あなたの答えはまだ終わっていませんでした。私はもう一つ質問したかった。しかし、コメントとして投稿するか、自分の質問として掲示しなければならないかについても熟考していました。私はそれを独立した質問として掲示することを決めました。私はあなたの答えを待っています! :) – g4v3
私は、拡張されているかどうかにかかわらず、すべてのタイプがANYに適合しているという印象を受けました。私はそのコードをテストします: foo:= create {BOOLEAN} それは働きました。 –