遍历Swift中的函数

时间:2019-05-31 18:04:14

标签: swift

我感到有点愚蠢...我想摆脱代码重复,因此我需要遍历某些函数(几个达尔文几何函数)。 但是当我尝试

for function in [Darwin.acos, Darwin.cos, Darwin.sin] { print(function(1.0)) }

我得到错误“'acos'的歧义使用”。我还尝试了Darwin.acos(Double),并获得了“对成员'acos'的歧义引用”和Darwin.acos { $0 }(及类似名称),没有任何运气。

是否可以这样做?谢谢!

2 个答案:

答案 0 :(得分:2)

您必须在某处指定类型:

logging.level.org.neo4j.ogm.drivers.bolt.request.BoltRequest=DEBUG

由于函数针对不同的浮点类型进行了重载:

let functions: [(Double) -> Double] = [Darwin.acos, Darwin.cos, Darwin.sin]
for function in functions { print(function(1.0)) }

答案 1 :(得分:2)

除了Sulthan said

在以后的Swift版本中,这些函数也可以作为静态函数用于浮点类型,请比较SE-0246 Generic Math(s) Functions

let functions = [Double.acos, Double.cos, Double.sin]
for function in functions { print(function(1.0)) }

您现在可以使用https://swift.org/download/#snapshots中当前的Swift开发者快照来尝试此操作。