Saya mencoba untuk mengubah Obj-C
kode ini menjadi Swift
kode tetapi saya tidak tahu apa yang seharusnya setara dengan kode ini?
#define DEGREES_TO_RADIANS(degrees)((M_PI * degrees)/180)
Saya mencari di Google dan menemukan ini
Tapi saya tidak mengerti bagaimana mengubahnya di Swift dalam kasus saya?
Jawaban:
Xcode 11 • Swift 5.1 atau lebih baru
Tempat bermain
Jika Anda ingin membuat bilangan bulat biner mengembalikan tipe titik mengambang alih-alih selalu mengembalikan CGFloat, Anda dapat membuat metode umum alih-alih properti yang dihitung:
sumber
CGFloat
?Ini tidak persis seperti yang Anda minta, tetapi di Swift 3 / iOS 10, Anda dapat menggunakan jenis Pengukuran dan melakukan konversi tanpa mengetahui rumusnya!
sumber
Apple menyediakan fungsi GLKit berikut untuk konversi:
sumber
Dikompilasi dengan Swift 3 . Tetap pertahankan semua nilai, lakukan semua penghitungan dalam radian dengan CGFloat ..., tetapi buat kode lebih mudah dibaca dengan konstanta dalam derajat. Misalnya: 90 ° Tanda ° secara ajaib akan melakukan konversi derajat menjadi radian.
Bagaimana mengatur ini:
Tentukan dan gunakan operator postfix untuk tanda ° . Operator ini akan melakukan konversi dari derajat ke radian. Contoh ini untuk Ints, perluas ini juga untuk tipe Float jika Anda membutuhkannya.
Beberapa contoh penggunaan:
Peringatan!
Terlalu mudah untuk menggunakan konversi ini dua kali (pada nilai yang sudah dalam radian karena kesalahan), Anda akan mendapatkan angka yang sangat kecil sebagai hasilnya, dan tampaknya sudut yang dihasilkan akan selalu nol ... JANGAN gunakan ° pada hal yang sama nilai dua kali (jangan dikonversi dua kali) !!:
sumber
IntegerInitializable
protokol tidak ada gunanya. Int sudah sesuai denganExpressibleByIntegerLiteral
public extension FixedWidthInteger { postfix static func °<T: FloatingPoint>(lhs: Self) -> T { T(lhs) * .pi / 180 } }
let angle: CGFloat = 45°
. Tetapi tidak diperlukan di mana ia mengharapkanCGFloat
atauFloatingPoint
jenis apa punCGAffineTransform(rotationAngle: 45°)
Juga, untuk mengubah radian fron menjadi derajat (jika ada yang menemukan ini di google):
sumber
Anda tidak lagi dibatasi pada karakter ASCII saat membuat nama variabel, jadi bagaimana kalau menggunakan π (alt-p):
Contoh penggunaan:
sumber
Swift 4.2.0
Anda dapat menulis fungsi umum global:
Contoh:
Jika Anda tidak ingin memperpanjang semua tipe floating Anda seperti ini
sumber
return .pi * degrees / 180
?T
merupakanFloatingPoint
jenis dan 180 adalahInt
jenis. Dengan cepat Anda tidak dapat melakukan kalkulasi pada tipe yang berbeda.Saya akan menggunakan prinsip yang sama @ t1ser yang disebutkan di atas, tetapi buat ekstensi
CGFloat
untuk membuatnya lebih mudah menggunakan desimal untuk derajatnya juga (jadi Anda bisa memiliki 23,4 derajat, misalnya):Menggunakannya akan sangat mudah juga (terutama karena saya pribadi tidak tahu cara mengetik ° 😜 - jika Anda juga tidak, itu
option+shift+8
btw):Atau untuk menggunakan penginisialisasi:
sumber
swift 2.3
sumber