2
我在IronPython中編寫了一個DSL。在C#中重載運算符並在python中使用 工作正常,直到您完成賦值(=
)運算符。IronPython C#隱式運算符在python中不起作用
使用隱式轉換重載解決了C#端的問題,但它在python中不起作用。
這是再現誤差最小的例子:
class FloatValue
{
public FloatValue(float value)
{
this.value = value;
}
public static implicit operator FloatValue(float value)
{
return new FloatValue(value);
}
public float value;
}
然後我執行:
FloatValue value = 5.0f // It works!!!
但是在Python:
# value is already an instance of FloatValue, it comes from somewhere. It's considered
# an immutable value, so there is no problem with generating a new instance.
value = 5.0 # Assigns the value, but does not work :(
我得到下面的異常:
Expected FloatValue, got float
我該如何使它工作?