Eiffel:void safety,一种简洁的方法来测试一个对象是否存在,然后调用它的特性
Eiffel: void safety, a concise way to test if an object exists and then call its feature
我想知道是否有更明确的说法
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 on else 可能是无效的...
为避免代码重复和多次测试,可以使用以下代码:
l_foo := foo
if not attached l_foo then
create l_foo
foo := l_foo
end
l_foo.bark
我想知道是否有更明确的说法
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 on else 可能是无效的...
为避免代码重复和多次测试,可以使用以下代码:
l_foo := foo
if not attached l_foo then
create l_foo
foo := l_foo
end
l_foo.bark