Eiffel: безопасность void, краткий способ проверить, существует ли объект, а затем вызвать его функцию - PullRequest
0 голосов
/ 24 января 2019

Мне было интересно, есть ли более ясное утверждение, тогда

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, поскольку foo on else может быть void ...

1 Ответ

0 голосов
/ 24 января 2019

Чтобы избежать дублирования кода и множественных тестов, можно использовать следующий код:

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