Как использовать математические функции , такие как sqrt()
, floor()
, round()
, sin()
и т.д.?
При выполнении:
_ = floor(2.0)
_ = sqrt(2.0)
Я получил:
ошибка: использование неразрешенного идентификатора 'floor'
ошибка: использование неразрешенного идентификатора 'sqrt'
Ambiguous reference to x
ответ, проверьте: stackoverflow.com/a/34357943/1359306Ответы:
Как уже отмечалось, у вас есть несколько вариантов. Если вам нужны только математические функции. Вы можете импортировать только Дарвина.
Если вам нужны математические функции и другие стандартные классы и функции. Вы можете импортировать Foundation.
Если вам нужно все, а также классы для пользовательского интерфейса, это зависит от того, предназначена ли ваша игровая площадка для OS X или iOS.
Для OS X вам нужно импортировать Cocoa.
Для iOS вам нужно импортировать UIKit.
Вы можете легко обнаружить платформу своей игровой площадки, открыв File Inspector (⌥⌘1).
источник
No such module 'Cocoa'
Чтобы быть совершенно точным, достаточно Дарвина. Нет необходимости импортировать всю структуру Какао.
Конечно, если вам нужны элементы из Cocoa или Foundation или других фреймворков более высокого уровня, вы можете импортировать их вместо
источник
sqrt
,floor
иround
потому , что вы можете использовать изначально , соответственно0.5.squareRoot()
,Int(0.5)
и0.5.round()
.Для людей, использующих swift [2.2] в Linux, то есть в Ubuntu, импорт отличается!
Правильный способ сделать это - использовать Glibc. Это связано с тем, что в OS X и iOS базовые Unix-подобные API находятся в Дарвине, но в Linux они расположены в Glibc. Импорт Foundation здесь не поможет, потому что сам по себе не делает различий. Для этого вам нужно явно импортировать его самостоятельно:
Вы можете следить за развитием платформы Foundation здесь, чтобы узнать больше
РЕДАКТИРОВАТЬ: 26 декабря 2018 г.
Как отметил на @ Кер , начиная с стрижа 3.0 некоторые математические функции теперь являются частью самих типов. Например, Double теперь имеет функцию squareRoot . Точно так же
ceil
,floor
,round
, все это может быть достигнуто сDouble.rounded(FloatingPointRoundingRule) -> Double
.Кроме того, я только что загрузил и установил последнюю стабильную версию swift на Ubuntu 18.04, и похоже, что
Foundation
фреймворк - это все, что вам нужно импортировать, чтобы иметь доступ к математическим функциям сейчас. Я пытался найти для этого документацию, но ничего не вышло.источник
sqrt
,floor
иround
потому , что вы можете использовать изначально , соответственно0.5.squareRoot()
,Int(0.5)
и0.5.round()
.pow
мне нужно было включитьGlibc
для Linux, спасибо!Вы можете использовать их прямо в строке:
источник
[1,2,3]
он вернетсяy = x
или я дам его [1,4,9] он вернетсяy = x^2
или что-то в этом родеf(x)
Чтобы использовать математические функции, вы должны
import Cocoa
Вы можете увидеть другие определенные математические функции следующим образом. Сделайте Cmd-щелчок по имени функции,
sqrt
и вы войдете в файл со всеми другими глобальными математическими функциями и константой.Небольшой фрагмент файла
источник
import Cocoa
их использовать.Что касается Swift, вы можете попробовать использовать инструменты, доступные в стандартной библиотеке Swift. Они должны работать на любой платформе, поддерживающей Swift.
Вместо того
floor()
,round()
и остальное округление процедур , которые можно использоватьrounded(_:)
:В настоящее время они доступны
Float
иDouble
должны быть достаточно легко преобразованы,CGFloat
например, в.Вместо этого
sqrt()
естьsquareRoot()
метод протокола FloatingPoint. Опять же, обаFloat
иDouble
соответствуютFloatingPoint
протоколу:Для тригонометрических функций стандартная библиотека не может помочь, поэтому вам лучше импортировать Darwin на платформах Apple или Glibc на Linux. Скрестив пальцы, они станут более аккуратным способом в будущем.
источник