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