Comment puis-je utiliser des fonctions mathématiques comme sqrt()
, floor()
, round()
, sin()
, etc?
En faisant:
_ = floor(2.0)
_ = sqrt(2.0)
Je reçois:
erreur: utilisation de l'identifiant non résolu 'étage'
erreur: utilisation de l'identifiant non résolu 'sqrt'
Ambiguous reference to x
réponse, vérifiez cette réponse: stackoverflow.com/a/34357943/1359306Ré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.
Si vous voulez des fonctions mathématiques et d'autres classes et fonctions standard. Vous pouvez importer 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.
Pour iOS, vous devez importer UIKit.
Vous pouvez facilement découvrir votre plate-forme de jeu en ouvrant l'inspecteur de fichiers (⌥⌘1).
la source
No such module 'Cocoa'
Pour être parfaitement précis, Darwin suffit. Pas besoin d'importer tout le framework Cocoa.
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
la source
sqrt
,floor
etround
parce que vous pouvez utiliser nativement respectivement0.5.squareRoot()
,Int(0.5)
et0.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:
Vous pouvez suivre le développement du framework Foundation ici pour en savoir plus
EDIT: 26 décembre 2018
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.la source
sqrt
,floor
etround
parce que vous pouvez utiliser nativement respectivement0.5.squareRoot()
,Int(0.5)
et0.5.round()
.pow
j'avais besoin d'inclureGlibc
pour Linux, merci!Vous pouvez les utiliser directement en ligne:
la source
[1,2,3]
il reviendraity = x
ou je le donnerais [1,4,9] il reviendraity = 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 fonction
sqrt
et vous entrez le fichier avec toutes les autres fonctions mathématiques globales et constanst.Un petit extrait du fichier
la source
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 utiliserrounded(_:)
:Ceux-ci sont actuellement disponibles sur
Float
etDouble
et il devrait être assez facile de les convertir en unCGFloat
par exemple.Au lieu de cela,
sqrt()
il y a lasquareRoot()
méthode sur le protocole FloatingPoint. Encore une fois, à la foisFloat
etDouble
conforme auFloatingPoint
protocole: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.
la source