2015-11-10 48 views
2

我剛剛學習Swift,最近我正在練習一些代碼,我想在數組中找到平均數。在Google上搜索它時,我發現了很多不同的例子......都以不同的方式處理這個問題。從幾行代碼到非常強大的函數。每個人都有不同的意見,或不同的角度。這讓我想知道:簡單的數學函數Swift

爲什麼更多的基本數學函數沒有內置爲本地函數?或者,爲什麼沒有一些大多數人用來實現這一目標的流行圖書館? (如果有的話,請指點我)

不可否認,我只有少數語言的經驗,因此我不知道這是多麼普遍,或者不是。或者就此而言,如果有很好的理由(可能會有)。

但以我的經驗,我從來沒有寫函數avg()或sum()。我並不是說這很難。不是。但是,花時間寫這樣的東西對我來說確實顯得效率低下。在C#中(例如),只需要包含LINQ命名空間,即可以訪問Average()擴展方法。在Python中,您可以導入「統計」模塊並使用mean()。在PHP中,您至少可以本地獲得array_sum()函數,從而使平均計算相當簡單。

而這只是談論sum()和avg()。其他相當簡單的數學函數如min(),max()甚至median()是什麼呢?每個人都在迭代他們的數組,或者使用reduce()(並且這樣做使得代碼更不可讀)。

我的問題很簡單...我錯過了什麼嗎?還是所有的swift開發者都只是自己寫?這對我來說似乎效率很低。

+0

要查看所有數學函數類型。例如'的sqrt(16.0)'在操場和符號 – vadian

回答

1

min and max存在於Swift中。如果您有陣列,請使用minElementmaxElement

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

許多其它數學函數,如根和權力和日誌,舍入,和三角,存在C,並且這些是直接可用在夫特,所以沒有點重新創建它們。

let x = sqrt(2.0) 

要總結一個數組,請使用reduce

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

CMD單擊對於reduce'的'說明,請參閱我的書:HTTP://www.apeth .COM/swiftBook/ch04.html#_array_enumeration_and_transformation – matt