我可以以某种方式发送数学符号(+, - ,*)作为函数参数?我想reduce()
为不同的标志调用功能.
在swift中,是指定数学运算的函数名称.要将sign作为参数传递,参数类型必须是带两个数字并返回数字的函数.如果您命令+单击任何符号,您将看到其定义如下:
public func +(lhs:UInt8,rhs:UInt8) - > UInt8
public func +(lhs:Int8,rhs:Int8) - > Int8
public func +(lhs:UInt16,rhs:UInt16) - > UInt16
public func +(lhs:Int16,rhs:Int16) - > Int16
public func +(lhs:UInt32,rhs:UInt32) - > UInt32
public func +(lhs:Int32,rhs:Int32) - > Int32
public func +(lhs:UInt64,rhs:UInt64) - > UInt64
public func +(lhs:Int64,rhs:Int64) - > Int64
public func +(lhs:UInt,rhs:UInt) - > UInt
public func +(lhs:Int,rhs:Int) - > Int
在您的情况下,您的reduce函数应如下所示
func reduce(sign: (Int,Int)->Int) -> Int{ return sign(2,3) } reduce(*) reduce(-)
func doSomeCalculation(_ fun:((Int, Int) -> Int)) -> Int { return fun(12,13) } doSomeCalculation(+) // 25 doSomeCalculation(-) // -1
同样可以做到的UInt
,对IntXX
等
+
基本上只是一个函数,它接受两个参数并返回它的总和.由于func
tions是任何其他对象,你可以将它们传递给它们.
你可以用同样的方式+
进入reduce
.