我试图在Swift中编写一些通用的数字代码。这是一个例子:
func linstep<X>(lambda: X, a: X, b: X) -> X {
return (X(1)-lambda)*a+lambda*b
}
结果为'X' cannot be constructed because it has no accessible initializers
。我需要确保1可以转换为X.
所以我尝试了这个变种:
func linstep<X: IntegerLiteralConvertible>(lambda: X, a: X, b: X) -> X {
return (X(integerLiteral: 1)-lambda)*a+lambda*b
}
但那也失败了。
我应该如何编写我的功能?
(我知道线性插值可以代数重新排列,以消除使用1.但这不是我的问题。)