Відповіді:
Як зазначали інші, у вас є кілька варіантів. Якщо ви хочете лише математичні функції. Ви можете імпортувати лише Дарвін.
import Darwin
Якщо вам потрібні математичні функції та інші стандартні класи та функції. Ви можете імпортувати Foundation.
import Foundation
Якщо ви хочете все, а також класи для користувальницького інтерфейсу, це залежить від того, чи ваш майданчик для OS X або iOS.
Для OS X вам потрібно імпортувати какао.
import Cocoa
Для iOS потрібно імпортувати UIKit.
import UIKit
Ви можете легко відкрити свою платформу дитячого майданчика, відкривши File Inspector (⌥⌘1).
No such module 'Cocoa'
Якщо бути абсолютно точним, досить Дарвіна. Не потрібно імпортувати всю структуру какао.
import Darwin
Звичайно, якщо вам потрібні елементи з какао, фундаменту або інших фреймворків вищого рівня, ви можете замість цього імпортувати їх
sqrt
, floor
а round
тому, що ви можете використовувати відповідно власне 0.5.squareRoot()
, Int(0.5)
і 0.5.round()
.
Для людей, які використовують швидкий [2.2] на Linux, тобто Ubuntu, імпорт відрізняється!
Правильний спосіб зробити це - використовувати Glibc. Це пояснюється тим, що в OS X та iOS основні Unix-подібні API знаходяться в Дарвіні, а в Linux вони знаходяться в Glibc. Імпортуючий фонд не допоможе вам тут, оскільки він не робить відмінностей сам по собі. Для цього вам потрібно явно імпортувати його самостійно:
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
Ви можете стежити за розробкою основи Фонду тут, щоб дізнатись більше
Як зазначив на @ Кер , починаючи з стрижа 3.0 деякі математичні функції тепер є частиною самих типів. Наприклад, Double тепер має функцію squareRoot . Точно так же ceil
, floor
, round
, все це може бути досягнуто з Double.rounded(FloatingPointRoundingRule) -> Double
.
Крім того, я щойно завантажив та встановив останню стабільну версію swift на Ubuntu 18.04, і, схоже, Foundation
фреймворк - це все, що вам потрібно імпортувати, щоб мати доступ до математичних функцій зараз. Я спробував знайти документацію для цього, але нічого не вийшло.
➜ swift
Welcome to Swift version 4.2.1 (swift-4.2.1-RELEASE). Type :help for assistance.
1> sqrt(9)
error: repl.swift:1:1: error: use of unresolved identifier 'sqrt'
sqrt(9)
^~~~
1> import Foundation
2> sqrt(9)
$R0: Double = 3
3> floor(9.3)
$R1: Double = 9
4> ceil(9.3)
$R2: Double = 10
sqrt
, floor
а round
тому, що ви можете використовувати відповідно власне 0.5.squareRoot()
, Int(0.5)
і 0.5.round()
.
pow
мені потрібно було включити Glibc
для Linux, дякую!
Ви можете використовувати їх прямо вбудовано:
var square = 9.4
var floored = floor(square)
var root = sqrt(floored)
println("Starting with \(square), we rounded down to \(floored), then took the square root to end up with \(root)")
[1,2,3]
воно повернеться, y = x
або я дам йому [1,4,9] воно повернеться, y = x^2
або щось просто близьке в такий спосібf(x)
Для використання математичних функцій вам потрібно import Cocoa
Ви можете побачити інші визначені математичні функції таким чином. Зробіть Cmd-Клацніть на назву функції, sqrt
і ви введете файл із усіма іншими загальноосвітніми математичними функціями та константою.
Невеликий фрагмент файлу
...
func pow(_: CDouble, _: CDouble) -> CDouble
func sqrtf(_: CFloat) -> CFloat
func sqrt(_: CDouble) -> CDouble
func erff(_: CFloat) -> CFloat
...
var M_LN10: CDouble { get } /* loge(10) */
var M_PI: CDouble { get } /* pi */
var M_PI_2: CDouble { get } /* pi/2 */
var M_SQRT2: CDouble { get } /* sqrt(2) */
...
import Cocoa
ними користуватися.
Для швидкого способу роботи ви можете спробувати скористатися інструментами, доступними у стандартній бібліотеці Swift. Вони повинні працювати на будь-якій платформі, яка здатна запускати Swift.
Замість того floor()
, round()
і інше округлення процедур , які можна використовувати rounded(_:)
:
let x = 6.5
// Equivalent to the C 'round' function:
print(x.rounded(.toNearestOrAwayFromZero))
// Prints "7.0"
// Equivalent to the C 'trunc' function:
print(x.rounded(.towardZero))
// Prints "6.0"
// Equivalent to the C 'ceil' function:
print(x.rounded(.up))
// Prints "7.0"
// Equivalent to the C 'floor' function:
print(x.rounded(.down))
// Prints "6.0"
В даний час вони доступні на Float
і, Double
і це повинно бути досить легко перетворити на CGFloat
наприклад.
Замість методу sqrt()
існує squareRoot()
протокол FloatingPoint. Знову ж таки, обидва Float
і Double
відповідають FloatingPoint
протоколу:
let x = 4.0
let y = x.squareRoot()
Що стосується тригонометричних функцій, стандартна бібліотека не може допомогти, тому вам найкраще імпортувати Дарвін на платформи Apple або Glibc на Linux. З схрещеними пальцями вони стануть акуратнішим способом у майбутньому.
#if os(OSX) || os(iOS)
import Darwin
#elseif os(Linux)
import Glibc
#endif
let x = 1.571
print(sin(x))
// Prints "~1.0"
Ambiguous reference to x
перевірите цю відповідь: stackoverflow.com/a/34357943/1359306