简单的数学函数Swift

时间:2015-11-10 17:17:10

标签: arrays swift math

我刚刚学习Swift,我最近练习了一些代码,我想找到数组中的平均数字。通过谷歌搜索,我发现了大量不同的例子......所有这些都以不同的方式解决问题。从几行代码到非常强大的功能。每个人都有不同的意见,或不同的角度。这让我想知道:

为什么更基本的数学函数不作为本机函数内置?或者,为什么没有大多数人用来实现这一目标的流行图书馆? (如果有,请指出我)

不可否认,我只有几种语言的经验,因此我不知道这是多么普遍,或者不是。或者就此而言,如果有充分理由(可能存在)。

但根据我的经验,我从来没有必要为avg()或sum()编写函数。我不是说这很难。不是。但是,花时间写这样的东西对我来说似乎非常低效。在C#中(例如),您只需要包含LINQ命名空间,该命名空间允许您访问Average()扩展方法。在Python中,您可以导入“statistics”模块并使用mean()。在PHP中,你至少可以原生地获得一个array_sum()函数,从而使平均值的计算相当轻松。

而这只是在谈论sum()和avg()。那么其他相当简单的数学函数如min(),max()甚至是median()呢?是每个人都在迭代他们的数组,或者使用reduce()(这样做会使代码的可读性大大降低)。

我的问题很简单......我错过了什么?或者所有快速开发人员都写自己的?这对我来说似乎效率低下。

1 个答案:

答案 0 :(得分:1)

Swift中存在

minmax。如果您有阵列,请使用minElementmaxElement

let i = min(2,1,3)
let i2 = [2,1,3].minElement()

C中存在许多其他数学函数,例如根和幂和日志,舍入和触发,这些函数在Swift中直接可用,因此没有必要重新创建它们。

let x = sqrt(2.0)

要对数组求和,请使用reduce

let sum = [2,1,3].reduce(0, combine:+)