在变量中分配运算符函数

时间:2014-11-09 14:35:20

标签: swift

我试图为**(不存在)运算符创建一个通用函数,该运算符将计算左数字到正确数字的幂。

它适用于0和正数,但我想要处理负数。

我想到了几个想法,但我想尝试将现有运算符的函数存储在一个变量中:

var operation = *

var operation = /

使用operation(a, b)a*ba/b

相同

在Swift中这样的事情可能吗?

1 个答案:

答案 0 :(得分:20)

你不能这样做:

var operation = *

但是, CAN 执行此操作:

var operation:(Int, Int) -> Int = (*)

operation(4,2) // -> 8

因为*有许多重载类型:

func *(lhs: UInt32, rhs: UInt32) -> UInt32
func *(lhs: Int32, rhs: Int32) -> Int32
func *(lhs: UInt64, rhs: UInt64) -> UInt64
func *(lhs: Int64, rhs: Int64) -> Int64
func *(lhs: UInt, rhs: UInt) -> UInt
func *(lhs: Int, rhs: Int) -> Int
func *(lhs: Float, rhs: Float) -> Float
func *(lhs: Double, rhs: Double) -> Double
func *(lhs: Float80, rhs: Float80) -> Float80

我们必须明确指定哪一个。