Réponses:
Comme d'autres l'ont noté, vous avez plusieurs options. Si vous ne voulez que des fonctions mathématiques. Vous ne pouvez importer que Darwin.
import Darwin
Si vous voulez des fonctions mathématiques et d'autres classes et fonctions standard. Vous pouvez importer Foundation.
import Foundation
Si vous voulez tout et aussi des classes pour l'interface utilisateur, cela dépend si votre terrain de jeu est pour OS X ou iOS.
Pour OS X, vous devez importer Cocoa.
import Cocoa
Pour iOS, vous devez importer UIKit.
import UIKit
Vous pouvez facilement découvrir votre plate-forme de jeu en ouvrant l'inspecteur de fichiers (⌥⌘1).
No such module 'Cocoa'
Pour être parfaitement précis, Darwin suffit. Pas besoin d'importer tout le framework Cocoa.
import Darwin
Bien sûr, si vous avez besoin d'éléments de Cocoa ou Foundation ou d'autres frameworks de niveau supérieur, vous pouvez les importer à la place
sqrt
, floor
et round
parce que vous pouvez utiliser nativement respectivement 0.5.squareRoot()
, Int(0.5)
et 0.5.round()
.
Pour les personnes utilisant swift [2.2] sous Linux, c'est-à-dire Ubuntu, l'importation est différente!
La bonne façon de faire est d'utiliser Glibc. C'est parce que sur OS X et iOS, les API de base de type Unix sont dans Darwin mais sous Linux, elles sont situées dans Glibc. Importer Foundation ne vous aidera pas ici car il ne fait pas la distinction en soi. Pour ce faire, vous devez l'importer vous-même explicitement:
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
Vous pouvez suivre le développement du framework Foundation ici pour en savoir plus
Comme souligné par @ Cœur , à partir de rapide 3.0 certaines fonctions mathématiques font maintenant partie des types eux - mêmes. Par exemple, Double a maintenant une fonction squareRoot . De même, ceil
, floor
, round
, peuvent tous être atteints avecDouble.rounded(FloatingPointRoundingRule) -> Double
.
De plus, je viens de télécharger et d'installer la dernière version stable de swift sur Ubuntu 18.04, et il semble que le Foundation
framework soit tout ce dont vous avez besoin pour importer pour avoir accès aux fonctions mathématiques maintenant. J'ai essayé de trouver de la documentation pour cela, mais rien ne s'est produit.
➜ 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
et round
parce que vous pouvez utiliser nativement respectivement 0.5.squareRoot()
, Int(0.5)
et 0.5.round()
.
pow
j'avais besoin d'inclure Glibc
pour Linux, merci!
Vous pouvez les utiliser directement en ligne:
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]
il reviendrait y = x
ou je le donnerais [1,4,9] il reviendrait y = x^2
ou quelque chose se fermait simplement de cette manièref(x)
Pour utiliser les fonctions mathématiques, vous devez import Cocoa
Vous pouvez voir les autres fonctions mathématiques définies de la manière suivante. Faites un Cmd-Cliquez sur le nom de la fonctionsqrt
et vous entrez le fichier avec toutes les autres fonctions mathématiques globales et constanst.
Un petit extrait du fichier
...
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
utiliser.
Pour la manière Swift de faire les choses, vous pouvez essayer d'utiliser les outils disponibles dans la bibliothèque standard Swift. Ceux-ci devraient fonctionner sur n'importe quelle plate-forme capable d'exécuter Swift.
Au lieu de floor()
, round()
et le reste des routines d'arrondi, vous pouvez utiliser 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"
Ceux-ci sont actuellement disponibles sur Float
et Double
et il devrait être assez facile de les convertir en un CGFloat
par exemple.
Au lieu de cela, sqrt()
il y a la squareRoot()
méthode sur le protocole FloatingPoint. Encore une fois, à la fois Float
et Double
conforme au FloatingPoint
protocole:
let x = 4.0
let y = x.squareRoot()
Pour les fonctions trigonométriques, la bibliothèque standard ne peut pas aider, il vaut donc mieux importer Darwin sur les plates-formes Apple ou Glibc sous Linux. Croisés les doigts, ils seront d'une manière plus soignée à l'avenir.
#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
réponse, vérifiez cette réponse: stackoverflow.com/a/34357943/1359306