Syntax 如何在Eiffel中返回值或对象?
结果关键字是否自动识别为返回值/对象?Syntax 如何在Eiffel中返回值或对象?,syntax,eiffel,Syntax,Eiffel,结果关键字是否自动识别为返回值/对象? 要使用的正确语法是什么? 不幸的是,我无法从文档和各种在线示例中找到明确的指示。关键字结果只是一个具有保留名称的局部变量,并且能够在特征体以及相应的后置条件中使用它。退出功能之前附加到结果的最后一个值是此功能返回的值。以下是一个例子: foo: SOMETHING do Result := bar if Result.whatever then qux (Result) els
要使用的正确语法是什么?
不幸的是,我无法从文档和各种在线示例中找到明确的指示。关键字结果只是一个具有保留名称的局部变量,并且能够在特征体以及相应的后置条件中使用它。退出功能之前附加到结果的最后一个值是此功能返回的值。以下是一个例子:
foo: SOMETHING
do
Result := bar
if Result.whatever then
qux (Result)
else
something_else := Result
Result := some_other_value
end
ensure
valid_result: Result.is_valid
end
有一条有效性规则规定,结果只能用于返回值的功能,因为它在不返回任何值的过程中没有意义。谢谢您的回答!结果也能返回一个对象吗?@vkouk,“返回一个对象”是什么意思?表达式
条
和某些其他值
在运行时进行计算,并生成附加到结果
的某些对象。然后该对象由函数foo
返回。Eiffel中的所有值都是对象。现在我明白了,我还以为在其他高级语言中也有原生类型。谢谢你的回答@vkouk,事实上,有一些类型是编译器预先知道的。它们需要处理文本值,如True
或5
。除此之外,所有类型都遵循相同的规则集。因此,True
表示扩展类的一个实例BOOLEAN
,5
表示扩展类的一个实例INTEGER
,“ABC”
表示引用类的一个实例STRING
,等等。所有这些实例都是对象。“文档”是什么?