जवाबों:
जैसा कि अन्य ने उल्लेख किया है कि आपके पास कई विकल्प हैं। यदि आप केवल गणितीय कार्य चाहते हैं। आप केवल डार्विन आयात कर सकते हैं।
import Darwin
यदि आप गणितीय कार्य और अन्य मानक कक्षाएं और कार्य चाहते हैं। आप फाउंडेशन आयात कर सकते हैं।
import Foundation
यदि आप सब कुछ चाहते हैं और उपयोगकर्ता इंटरफ़ेस के लिए कक्षाएं भी करते हैं, तो यह निर्भर करता है कि आपका खेल का मैदान ओएस एक्स या आईओएस के लिए है या नहीं।
OS X के लिए, आपको कोकोआ आयात करना होगा।
import Cocoa
IOS के लिए, आपको UIKit का आयात करना होगा।
import UIKit
आप फ़ाइल इंस्पेक्टर (.1) खोलकर आसानी से अपने खेल के मैदान का पता लगा सकते हैं।
No such module 'Cocoa'
पूरी तरह से सटीक होने के लिए, डार्विन पर्याप्त है। पूरे कोको फ्रेमवर्क को आयात करने की आवश्यकता नहीं है।
import Darwin
बेशक, अगर आपको कोको या फाउंडेशन या अन्य उच्च स्तर के ढांचे से तत्वों की आवश्यकता है, तो आप उन्हें इसके बजाय आयात कर सकते हैं
sqrt
, floor
और round
क्योंकि आप मूल रूप से क्रमशः उपयोग कर सकते हैं 0.5.squareRoot()
, Int(0.5)
और 0.5.round()
।
लिनक्स यानी उबंटू पर स्विफ्ट [2.2] का उपयोग करने वाले लोगों के लिए, आयात अलग है!
ऐसा करने का सही तरीका Glibc का उपयोग करना है। इसका कारण यह है कि ओएस एक्स और आईओएस पर, बुनियादी यूनिक्स की तरह एपीआई डार्विन में हैं, लेकिन लिनक्स में, ये ग्लासक में स्थित हैं। आयात करना यहाँ आपकी मदद नहीं करेगा क्योंकि यह अपने आप में अंतर नहीं बनाता है। ऐसा करने के लिए, आपको स्पष्ट रूप से इसे स्वयं आयात करना होगा:
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
अधिक जानने के लिए आप यहां फाउंडेशन फ्रेमवर्क के विकास का अनुसरण कर सकते हैं
जैसा कि बताया द्वारा @ कोयूर , तेज 3.0 से शुरू कुछ गणित कार्यों अब प्रकार खुद को का हिस्सा हैं। उदाहरण के लिए, डबल में अब एक स्क्वायररूट फ़ंक्शन है। इसी तरह, ceil
, floor
, round
, सभी के साथ प्राप्त किया जा सकता Double.rounded(FloatingPointRoundingRule) -> Double
।
इसके अलावा, मैंने उबंटू 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
लिए, धन्यवाद!
आप उन्हें सही इनलाइन का उपयोग कर सकते हैं:
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
आप अन्य परिभाषित गणितीय कार्यों को निम्नलिखित तरीके से देख सकते हैं। फ़ंक्शन नाम पर एक सीएमडी-क्लिक करें 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
उनका उपयोग करना होगा।
चीजों को करने के स्विफ्ट तरीके के लिए, आप स्विफ्ट स्टैंडर्ड लाइब्रेरी में उपलब्ध उपकरणों का उपयोग करने का प्रयास कर सकते हैं। इन्हें किसी भी प्लेटफ़ॉर्म पर काम करना चाहिए जो स्विफ्ट को चलाने में सक्षम हो।
इसके बजाय 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 आयात करना सबसे अच्छा है। उँगलियों के पार-वे भविष्य में एक भद्दा तरीका होगा।
#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