2015-11-10 7 views
2

Я просто изучаю Swift, и недавно я тренировался с некоторым кодом, и мне хотелось найти среднее число чисел в массиве. После Googling, я нашел множество разных примеров ... все это по-разному подходит к проблеме. От всего лишь нескольких строк кода до очень надежных функций. У всех было другое мнение или другой ракурс. И это оставило меня интересно:Простые математические функции Swift

Почему более простые математические функции не встроены в качестве нативной функции? ИЛИ, Почему нет какой-то популярной библиотеки, которую большинство людей используют для достижения этой цели? (Если есть один, укажите мне)

По общему признанию, у меня есть опыт только на нескольких языках, поэтому я не знаю, насколько это распространено, или нет. Или, если это важно, если есть веская причина для этого или нет (может быть).

Но, по моему опыту, мне никогда не приходилось писать функции для avg() или sum(). Я не говорю, что это сложно. Это не. Но для меня, похоже, очень неэффективно тратить время на такие вещи. В C# (например) вам нужно только включить пространство имен LINQ, которое дает вам доступ к среднему методу расширения(). В Python вы можете импортировать модуль «статистика» и использовать значение(). В PHP вы, по крайней мере, получаете функцию array_sum() изначально, тем самым делая вычисление среднего достаточно безболезненным.

И это просто говорит о sum() и avg(). Что относительно других довольно простых математических функций, таких как min(), max() или даже медиана()? Каждый из них выполняет итерацию по своим массивам или использует reduce() (и тем самым делает код намного менее удобочитаемым).

Мой вопрос прост ... мне что-то не хватает? Или все быстрые разработчики просто пишут сами? Мне это кажется неэффективным.

+0

Чтобы увидеть все математические функции типа, например, 'SQRT (16,0)' в детской площадке и CMD нажмите на символ – vadian

ответ

1

min и max есть в Swift. Если у вас есть массив, используйте minElement и maxElement.

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:+) 
+2

Для объяснения 'reduce', увидеть мою книгу: HTTP: //www.apeth .com/swiftBook/ch04.html # _array_enumeration_and_transformation – matt

Смежные вопросы