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

Мне было интересно, если есть более четкое утверждение, то

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 может быть пустым...

1 ответ

Решение

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

l_foo := foo
if not attached l_foo then
    create l_foo
    foo := l_foo
end
l_foo.bark
Другие вопросы по тегам