簡體   English   中英

埃菲爾鐵塔:古典式壓鑄開關結構,附帶並檢查

[英]Eiffel: classical typecasting switch structure with attached and inspect

做某事的最佳實踐是什么

local
    l_pet: ANIMAL
do
    l_pet := catch_it_from_the_sky
    inspect l_pet
    when attached {DOG} l_pet as l_dog
        l_dog.eat (meat)
    when attached {FISH} l_pet as l_fish
        l_fish.eat (plants)
    else
        io.put_string ("Strange animal how do I feed him???")
    end
do

編譯器與抱怨attached時,后...

更新:為什么有這種需要?

因為碰巧我弄亂了重復的復制粘貼,這是一種語言試圖避免的粘貼。 在上面的例子中, l_pet被寫入了一次,如果是/ l_pet ,我將被寫入N次。

inspect語句允許檢查表達式是否具有特定值,並且可以應用於整數類型的表達式(例如INTEGER_64CHARACTER_32NATURAL_8 ):

inspect age
when 6 .. 16 then ...
when 18 then ...
when 80, 90 then ...
...
end

為了區分對象類型,使用條件指令:

if attached {DOG} pet as dog then
   dog.eat (meat)
elseif attached {FISH} pet as fish then
   fish.eat (plants)
else
   io.put_string ("Strange animal how do I feed him???")
end

在多分支指令中

inspect exp when ... then ... else ... end

exp表達式必須是字符或整數表達式。

在您給出的示例中,我看不到需要執行Object-Test ,但是如果您需要執行類似的操作,則需要使用條件指令。

if ... then ... elseif ... then ... else ... end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM