我目前在我的 DLR 语言实现中遇到一个问题,在该语言中定义的方法的后续调用使用与该方法的第一次调用相同的输入参数发生。
所以......如果我用我的语言这样做:
PrintType( 34 );
PrintType( 34.1 );
...输出是:
整数
整数
我期望的地方:
整数
十进制
我怀疑(但还不能确认)问题是由以下原因引起的:
我的调用绑定器(InvokeAction 子类)生成一个适当的调用表达式,然后返回一个带有该表达式和 Restrictions.Empty 的新 MetaObject
因此,我认为可能发生的情况是 Restrictions 参数通知 DLR 何时可以将此构造重新用于对该方法的后续调用,并且由于我没有设置固有限制,因此始终重新使用第一个构造(抱歉,我这里的术语可能是错误的......希望你明白)
所以......我在想我需要使用为每个参数生成的限制的合并......按类型,或者按实例。
有人可以证实或否认我的想法吗?对于我所看到的行为,我应该探索任何其他可能性吗?
蒂亚...