埃菲尔铁塔:无效安全性,一种简洁的方法来测试对象是否存在,然后调用其功能

时间:2019-01-24 19:12:18

标签: eiffel void-safety

我想知道那时是否有更清晰的陈述

if not attached foo then
    create foo
end
if attached foo as l_foo then
    l_foo.bark
end

if not attached foo then
    create foo
    foo.bark
else
    foo.bark
end

将重复foo.bark,显然我想避免它……甚至最后一条语句也不会使用void-safety进行编译,因为其他的foo可能是无效的……

1 个答案:

答案 0 :(得分:2)

为避免代码重复和多次测试,可以使用以下代码:

l_foo := foo
if not attached l_foo then
    create l_foo
    foo := l_foo
end
l_foo.bark