做某事的最佳实践是什么
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
被写入了一次,如果是/否,则需要写入N次,而我不得不将其写入次数就好像……一样。
答案 0 :(得分:1)
inspect
语句允许检查表达式是否具有特定值,并且可以应用于整数类型的表达式(例如INTEGER_64
,CHARACTER_32
或NATURAL_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
答案 1 :(得分:1)
在多分支指令中
inspect exp when ... then ... else ... end
exp
表达式必须是字符或整数表达式。
在您给出的示例中,我认为没有必要这样做Object-Test, 但是如果您需要执行类似操作,则需要使用条件指令。
if ... then
...
elseif ... then
...
else
...
end