【发布时间】:2013-09-17 04:33:27
【问题描述】:
我看到 F# 使用 ** 运算符作为幂,所以 2 ** 5 = 32。这与 C# 不同,在 C# 中,您可以选择在自定义类型中使用 '^' 运算符,但由于某种原因,内置数字类型不使用它。
但是如何在 C# 中实现 ** 运算符以在 F# 项目中使用?
如果我在 C# 中这样做:
public static Integer operator ^(Integer left, Integer right)
{
if (Integer.IsNaN(left) || Integer.IsNaN(right)) return NaN;
return left.RaiseToPower(right);
}
它编译得很好,我可以像使用“+”运算符一样使用它,但是这些都不能在 F# 中工作:
let intgr3 = intgr1 ** intgr2
let intgr3 = intgr1 ^ intgr2
而在 C# 中,这是行不通的:
public static Integer operator **(Integer left, Integer right)
{
if (Integer.IsNaN(left) || Integer.IsNaN(right)) return NaN;
return left.RaiseToPower(right);
}
那么如何在 C# 中定义 ** 运算符的 F# 等效项?
谢谢。
【问题讨论】:
-
您不能在 C# 中定义新的运算符(
**不是内置运算符)。我建议您将**运算符放在 F# 模块中。 -
另外,在 C# 中
^是逻辑异或。也许它被映射到 F# 中的那个(即^^^)。
标签: c# f# operator-keyword exponent