[英]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]`
其实在检查语法时
attached {INTEGER_64} my_watt_object as l_int
它也没有通过...这是预期的行为吗?
实际上,对我来说,语义情况是相同的,必须验证一致性步骤...对我来说(但似乎在一致性/一致性之间的语言定义不是这种情况)
一致性和可转换性互斥,第87页
符合性规则对定义为convert
一种类型convert
为另一种类型(从我的情况从WATT到INTEGER_64)是否有效?
在Eiffel中,由语言指定的转换仅在编译时有效。 如果重新连接的源与编译时的重新连接的目标不符,并且具有相应的转换功能,则适用。
在运行时不执行自动转换。 如果需要此功能,则需要自己实施。 在您的示例中,如果参数类型为WATT
,则需要显式调用从INTEGER_64
到WATT
的转换,并传递WATT
类型的对象,而不是INTEGER_64
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.