Bagaimana cara menggunakan fungsi matematika seperti sqrt()
, floor()
, round()
, sin()
, dll?
Saat melakukan:
_ = floor(2.0)
_ = sqrt(2.0)
Saya mendapat:
kesalahan: penggunaan pengenal yang tidak terselesaikan
kesalahan 'lantai' : penggunaan pengenal yang tidak terselesaikan 'sqrt'
Ambiguous reference to x
jawabannya , periksa ini: stackoverflow.com/a/34357943/1359306Jawaban:
Seperti yang dicatat lain, Anda memiliki beberapa opsi. Jika Anda hanya menginginkan fungsi matematika. Anda hanya dapat mengimpor Darwin.
Jika Anda menginginkan fungsi matematika dan kelas dan fungsi standar lainnya. Anda dapat mengimpor Foundation.
Jika Anda menginginkan segalanya dan juga kelas untuk antarmuka pengguna, itu tergantung apakah taman bermain Anda untuk OS X atau iOS.
Untuk OS X, Anda perlu mengimpor Cocoa.
Untuk iOS, Anda perlu mengimpor UIKit.
Anda dapat dengan mudah menemukan platform taman bermain Anda dengan membuka File Inspector (⌥⌘1).
sumber
No such module 'Cocoa'
Tepatnya, Darwin sudah cukup. Tidak perlu mengimpor keseluruhan kerangka Kakao.
Tentu saja, jika Anda membutuhkan elemen dari Cocoa atau Foundation atau kerangka kerja tingkat yang lebih tinggi, Anda dapat mengimpornya
sumber
sqrt
,floor
danround
karena Anda mungkin menggunakan aslinya0.5.squareRoot()
,Int(0.5)
dan0.5.round()
.Bagi orang yang menggunakan swift [2.2] di Linux misalnya Ubuntu, impornya berbeda!
Cara yang benar untuk melakukannya adalah dengan menggunakan Glibc. Ini karena di OS X dan iOS, API dasar mirip Unix ada di Darwin tetapi di linux, ini ada di Glibc. Importing Foundation tidak akan membantu Anda di sini karena tidak membuat perbedaan dengan sendirinya. Untuk melakukan ini, Anda harus mengimpornya sendiri secara eksplisit:
Anda dapat mengikuti perkembangan kerangka Foundation sini untuk mempelajari lebih lanjut
EDIT: 26 Desember 2018
Seperti yang ditunjukkan oleh @ Cœur , mulai dari swift 3.0 beberapa fungsi matematika sekarang menjadi bagian dari jenis itu sendiri. Misalnya, Double sekarang memiliki fungsi squareRoot . Demikian pula,
ceil
,floor
,round
, semua bisa dicapai denganDouble.rounded(FloatingPointRoundingRule) -> Double
.Selain itu, saya baru saja mengunduh dan menginstal swift versi stabil terbaru di Ubuntu 18.04, dan sepertinya hanya
Foundation
kerangka kerja yang perlu Anda impor untuk memiliki akses ke fungsi matematika sekarang. Saya mencoba mencari dokumentasi untuk ini, tetapi tidak ada yang muncul.sumber
sqrt
,floor
danround
karena Anda mungkin menggunakan aslinya0.5.squareRoot()
,Int(0.5)
dan0.5.round()
.pow
saya perlu menyertakanGlibc
untuk Linux, terima kasih!Anda dapat menggunakannya secara langsung:
sumber
[1,2,3]
itu akan kembaliy = x
atau saya akan memberikannya [1,4,9] itu akan kembaliy = x^2
atau mendekati seperti ituf(x)
Untuk menggunakan fungsi matematika, Anda harus melakukannya
import Cocoa
Anda dapat melihat fungsi matematika lain yang ditentukan dengan cara berikut. Buat Cmd-Klik pada nama fungsi
sqrt
dan Anda memasukkan file dengan semua fungsi dan konstanta matematika global lainnya.Potongan kecil file
sumber
import Cocoa
menggunakannya.Untuk cara Swift dalam melakukan sesuatu, Anda dapat mencoba dan menggunakan alat yang tersedia di Perpustakaan Standar Swift. Ini harus berfungsi pada platform apa pun yang dapat menjalankan Swift.
Alih-alih
floor()
,round()
dan rutinitas pembulatan lainnya, Anda dapat menggunakanrounded(_:)
:Ini saat ini tersedia di
Float
danDouble
dan seharusnya cukup mudah untuk diubah menjadi fileCGFloat
contoh.Alih-alih
sqrt()
adasquareRoot()
metode pada protokol FloatingPoint. Sekali lagi, keduanyaFloat
danDouble
sesuai denganFloatingPoint
protokol:Untuk fungsi trigonometri, pustaka standar tidak dapat membantu, jadi sebaiknya Anda mengimpor Darwin di platform Apple atau Glibc di Linux. Semoga saja mereka akan menjadi cara yang lebih rapi di masa depan.
sumber