Casting 埃菲尔铁塔:古典型铸造开关结构,带有连接和检查功能
做以下事情的最佳实践是什么Casting 埃菲尔铁塔:古典型铸造开关结构,带有连接和检查功能,casting,switch-statement,eiffel,Casting,Switch Statement,Eiffel,做以下事情的最佳实践是什么 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
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
编译器在
更新:为什么有这样的需要?
因为我碰巧搞砸了重复的复制粘贴,这是一种语言试图避免的。在上面的例子中,
l_pet
只写了一次,其中if/else的次数是N次,if/else的次数与if的次数相同……一个inspect
语句允许检查表达式是否有特定的值,并且可以应用于整数类型的表达式(例如INTEGER\u 64
、CHARACTER\u 32
或NATURAL\u 8
):
为了区分对象类型,使用条件指令:
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
语句允许检查表达式是否具有特定值,并且可以应用于整数类型的表达式(例如INTEGER\u 64
、CHARACTER\u 32
或NATURAL\u 8
):
为了区分对象类型,使用条件指令:
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
在多分支指令中
检查exp when…然后…else…end
exp
表达式必须是字符或整数表达式
在你给出的例子中,我认为没有必要这样做,
但是如果你需要这样做,你需要使用条件指令
如果…那么
...
艾尔塞夫…那么
...
其他的
...
结束
在多分支指令中
检查exp when…然后…else…end
exp
表达式必须是字符或整数表达式
在你给出的例子中,我认为没有必要这样做,
但是如果你需要这样做,你需要使用条件指令
如果…那么
...
艾尔塞夫…那么
...
其他的
...
结束
stackexchange上缺少一个拇指支撑按钮,上面写着“amuzing示例”,希望您喜欢阅读我;-)stackexchange上缺少一个拇指支撑按钮,上面写着“amuzing示例”,希望您喜欢阅读我;-)