回答:
他の人が指摘したように、いくつかのオプションがあります。数学関数だけが必要な場合。インポートできるのはDarwinのみです。
import Darwin
数学関数およびその他の標準クラスと関数が必要な場合。Foundationをインポートできます。
import Foundation
ユーザーインターフェイスのすべてとクラスも必要な場合は、プレイグラウンドがOS X用かiOS用かによって異なります。
OS Xの場合は、Cocoaをインポートする必要があります。
import Cocoa
iOSの場合、UIKitをインポートする必要があります。
import UIKit
ファイルインスペクタ(⌥⌘1)を開くと、プレイグラウンドプラットフォームを簡単に見つけることができます。
No such module 'Cocoa'
LinuxすなわちUbuntuでswift [2.2]を使用している人にとって、インポートは異なります!
これを行う正しい方法は、Glibcを使用することです。これは、OS XとiOSでは、基本的なUnixのようなAPIがDarwinにありますが、LinuxではGlibcにあるためです。Importing Foundationは、それ自体では区別されないため、ここでは役に立ちません。これを行うには、自分で明示的にインポートする必要があります。
#if os(macOS) || os(iOS)
import Darwin
#elseif os(Linux) || CYGWIN
import Glibc
#endif
ここで Foundationフレームワークの開発をフォローして、詳細を学ぶことができます。
指摘で・クール@ SWIFT 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
他の定義済み数学関数は、次の方法で確認できます。関数名sqrt
をCmd キーを押しながらクリックすると、他のすべてのグローバル数学関数と定数を含むファイルを入力できます。
ファイルの小さなスニペット
...
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標準ライブラリで利用可能なツールを試して利用することができます。これらは、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()
浮動小数点プロトコルの方法。ここでも、両方Float
とDouble
に準拠しFloatingPoint
たプロトコル:
let x = 4.0
let y = x.squareRoot()
三角関数の場合、標準ライブラリは役に立たないため、AppleプラットフォームのDarwinまたはLinuxの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