繁体   English   中英

Eiffel:在代理调用参数的情况下,convert方法是否起作用?

[英]Eiffel: are the convert methods working in case of agent call arguments?

我正在调用一个参数为integer_64的过程。 我实现了一个WATT类,该类可以从INTEGER_64创建它,似乎执行到这一点时就停止了,我在哪里错了?

Catcall detected for argument#1 args'中Catcall detected for argument#1 Catcall:预期TUPLE [!WATT]但得到TUPLE [INTEGER_64]`

code_and_situation

附件箱(更新)

其实在检查语法时

attached {INTEGER_64} my_watt_object as l_int

在此处输入图片说明

它也没有通过...这是预期的行为吗?

实际上,对我来说,语义情况是相同的,必须验证一致性步骤...对我来说(但似乎在一致性/一致性之间语言定义不是这种情况)

一致性和可转换性互斥,第87页

符合性规则对定义为convert一种类型convert为另一种类型(从我的情况从WATT到INTEGER_64)是否有效?

在Eiffel中,由语言指定的转换仅在编译时有效。 如果重新连接的源与编译时的重新连接的目标不符,并且具有相应的转换功能,则适用。

在运行时不执行自动转换。 如果需要此功能,则需要自己实施。 在您的示例中,如果参数类型为WATT ,则需要显式调用从INTEGER_64WATT的转换,并传递WATT类型的对象,而不是INTEGER_64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM