Nasıl gibi matematiksel fonksiyonları kullanırım sqrt(), floor(), round(), sin(), vs?
Yaparken:
_ = floor(2.0)
_ = sqrt(2.0)
Alırım:
hata: çözümlenmemiş tanımlayıcı 'kat'
kullanımı hatası: çözümlenmemiş 'sqrt' tanımlayıcısı kullanımı

Yanıtlar:
Diğerlerinin de belirttiği gibi birkaç seçeneğiniz var. Yalnızca matematiksel fonksiyonlar istiyorsanız. Yalnızca Darwin'i içe aktarabilirsiniz.
import Darwin
Matematiksel fonksiyonlar ve diğer standart sınıflar ve fonksiyonlar istiyorsanız. Foundation'ı ithal edebilirsiniz.
import Foundation
Her şeyi ve ayrıca kullanıcı arayüzü için sınıfları istiyorsanız, oyun alanınızın OS X veya iOS için olup olmadığına bağlıdır.
OS X için Cocoa'yı içe aktarmanız gerekir.
import Cocoa
İOS için, UIKit'i içe aktarmanız gerekir.
import UIKit
File Inspector'ı (⌥⌘1) açarak oyun alanı platformunuzu kolayca keşfedebilirsiniz.

No such module 'Cocoa'
Tamamen kesin olmak gerekirse, Darwin yeterlidir. Tüm Cocoa çerçevesini içe aktarmaya gerek yok.
import Darwin
Elbette, Cocoa veya Foundation'dan veya diğer üst düzey çerçevelerden öğelere ihtiyacınız varsa, bunun yerine bunları içe aktarabilirsiniz
sqrt, floorve roundözgün olarak sırasıyla kullanabilir çünkü 0.5.squareRoot(), Int(0.5)ve 0.5.round().
Linux, yani Ubuntu'da swift [2.2] kullanan kişiler için içe aktarma işlemi farklıdır!
Bunu yapmanın doğru yolu Glibc kullanmaktır. Bunun nedeni, OS X ve iOS'ta temel Unix benzeri API'lerin Darwin'de olması, ancak linux'ta bunlar Glibc'de bulunmasıdır. Foundation'ı ithal etmek burada size yardımcı olmayacak çünkü bu ayrımı kendi başına yapmıyor. Bunu yapmak için, bunu kendiniz açıkça içe aktarmanız gerekir:
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
Sen Vakfı çerçevesinin geliştirilmesini takip edebilirsiniz burada daha fazla bilgi edinmek için
Gibi işaret tarafından Cœur @ swift 3.0 başlayarak, bazı matematik fonksiyonlar artık tiplerinin kendilerini bir parçasıdır. Örneğin, Double artık bir squareRoot işlevine sahiptir. Benzer şekilde, ceil, floor, round, tüm elde edilebilir Double.rounded(FloatingPointRoundingRule) -> Double.
Dahası, Ubuntu 18.04'e swift'in en son kararlı sürümünü indirip yükledim ve görünen o Foundationki matematik işlevlerine şimdi erişmek için içeri aktarmanız gereken tek şey framework. Bunun için belge bulmaya çalıştım ama hiçbir şey çıkmadı.
➜ 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, floorve roundözgün olarak sırasıyla kullanabilir çünkü 0.5.squareRoot(), Int(0.5)ve 0.5.round().
powben dahil etmek gerekli Glibc, Linux için teşekkürler!
Bunları doğrudan hat içinde kullanabilirsiniz:
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]geri y = xdönerdi y = x^2ya da verirdim [1,4,9] geri dönerdi ya da bu şekilde yakın bir şeyf(x)
Matematik fonksiyonlarını kullanmak için yapmanız gereken import Cocoa
Diğer tanımlanmış matematiksel fonksiyonları aşağıdaki şekilde görebilirsiniz. Fonksiyon adına bir Cmd-Click yapın sqrtve dosyayı diğer tüm global matematik fonksiyonları ve tutarlı bir şekilde girin.
Dosyanın küçük bir parçası
...
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 Cocoabunları kullanmak için.
Bir şeyleri yapmanın Swift yolu için, Swift Standard Kitaplığında bulunan araçları deneyebilir ve kullanabilirsiniz. Bunlar, Swift çalıştırabilen herhangi bir platformda çalışmalıdır.
Yerine floor(), round()ve kullanabileceğiniz yuvarlama rutinleri geri kalanı 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"
Bunlar şu anda mevcuttur Floatve örneğin Doublebir CGFloatörneğe dönüştürmek için yeterince kolay olmalıdır .
Yerine sqrt()var squareRoot()FloatingPoint protokolü yöntemi. Yine, hem Floatve Doubleuygun FloatingPointprotokol:
let x = 4.0
let y = x.squareRoot()
Trigonometrik fonksiyonlar için standart kütüphane yardımcı olamaz, bu yüzden Darwin'i Apple platformlarına veya Linux'ta Glibc'ye aktarmanız en iyisidir. Parmak çaprazlama, gelecekte daha temiz bir yol olacak.
#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 xBu yanıtı alırsanız : stackoverflow.com/a/34357943/1359306