Bahasa pengaturcaraan pantas. Bahasa pengaturcaraan pantas. versi Rusia. Sintaks yang mudah dibaca diilhamkan oleh Python dan Ruby

miden16 Jun 10, 2014 at 01:06 pm

Bahasa pengaturcaraan pantas. versi Rusia

  • Pembangunan untuk iOS,
  • pantas

Hello, Habr! Pada 2 Jun, kami semua dapat melihat dengan mata kami sendiri bagaimana syarikat itu Apple bermula mencipta revolusi dalam kem pembangun Objective-C dengan memperkenalkan dunia kepada bahasa pengaturcaraan baharu mereka - Swift. Pada masa yang sama, dia menyediakan dokumentasi kecil tentang bahasa itu kepada orang ramai, yang kami memutuskan untuk menterjemah jika ada permintaan. Kami membentangkan kepada perhatian anda terjemahan bab pertama. Jika topik itu menarik, kami akan terus menerbitkan terjemahan setiap minggu.

Panduan bahasa
Asas-asas
Operator Asas
Rentetan dan Watak
Jenis Koleksi
Aliran Kawalan
Fungsi
Penutupan
Penghitungan
Kelas dan Struktur
Hartanah
Kaedah
Subskrip
Warisan
Inisialisasi
Penyahinisian
Pengiraan Rujukan Automatik
Rantaian Pilihan
Jenis Casting
Jenis Bersarang
Sambungan
Protokol
Generik
Operator Lanjutan

Rujukan Bahasa
Mengenai Rujukan Bahasa
Struktur Leksikal
Jenis
Ungkapan
Kenyataan
Pengisytiharan
Atribut
Corak
Parameter dan Argumen Generik
Ringkasan Tatabahasa
Tanda dagangan

Selamat datang ke Swift

Mengenai bahasa Swift
Swift ialah bahasa pengaturcaraan baharu untuk membangunkan aplikasi iOS dan OS X yang menggabungkan yang terbaik daripada C dan Objektif-C, tetapi tanpa sekatan yang dikenakan demi keserasian dengan C. Swift menggunakan corak pengaturcaraan selamat dan menambah ciri moden yang menjadikan penciptaan aplikasi dalam proses yang lebih mudah, lebih fleksibel dan menyeronokkan. Swift, dicipta oleh kami dengan batu tulis bersih, adalah peluang untuk membayangkan semula bagaimana aplikasi dibangunkan.

Swift telah dibangunkan selama beberapa tahun. Asas bahasa pengaturcaraan baharu ialah pengkompil, penyahpepijat dan rangka kerja sedia ada. Kami telah memudahkan pengurusan memori dengan Pengiraan Rujukan Automatik (ARC). Rangka kerja kami juga telah melalui pemodenan besar. Objektif-C mula menyokong blok, literal dan modul - semua ini mewujudkan keadaan yang menggalakkan untuk pengenalan teknologi moden. Kerja persediaan inilah yang menjadi asas kepada bahasa pengaturcaraan baharu yang akan digunakan untuk membangunkan produk perisian masa depan untuk Apple.

Pembangun Objektif-C akan mendapati Swift biasa. Ia menggabungkan kebolehbacaan parameter yang dinamakan dengan kuasa dinamik model objek Objektif-C. Ia membuka rangka kerja Koko sedia ada dan serasi dengan kod yang ditulis dalam Objektif-C. Dibina di atas asas biasa ini, bahasa ini menawarkan banyak ciri baharu dan menyatukan aspek prosedur dan berorientasikan objek bahasa pengaturcaraan.

Swift juga tidak akan menakutkan pengaturcara baru. Ini adalah yang pertama bahasa yang berkuasa pengaturcaraan yang jelas dan menyeronokkan seperti bahasa skrip. Ia menyokong apa yang dipanggil taman permainan, yang membolehkan pengaturcara bereksperimen dengan kod, melihat hasilnya dalam masa nyata tanpa perlu menyusun dan menjalankan aplikasi.

Swift menggabungkan bahasa moden yang terbaik dan dibangunkan menggunakan pengalaman yang luas epal. Pengkompil kami adalah sinonim dengan prestasi, dan bahasa kami dioptimumkan untuk pembangunan tanpa mengambil kira kompromi. Ia direka sedemikian rupa sehingga anda boleh membangunkan aplikasi "hello, dunia!" pertama anda, dan juga keseluruhan sistem pengendalian. Semua ini menjadikan Swift sebagai alat penting untuk pembangun dan untuk Apple sendiri.

Swift ialah cara baharu yang hebat untuk membina apl untuk iOS dan OS X, dan kami akan terus membangunkannya dengan lebih banyak lagi fungsi baharu dan memperkenalkan peluang baru. Matlamat kami adalah bercita-cita tinggi. Dan kami tidak sabar untuk melihat apa yang anda boleh buat dengannya.

Pengenalan kepada Swift
Mengikut tradisi yang telah lama wujud, program pertama dalam bahasa baharu harus memaparkan perkataan "Hello, dunia" pada skrin. Dengan Swift ia dilakukan seperti ini:

Println("Hello, dunia")
Jika anda pernah membangunkan dalam C atau Objektif-C, sintaks ini sepatutnya kelihatan seperti biasa kepada anda - dalam Swift, baris kod ini ialah atur cara yang lengkap. Anda tidak perlu lagi mengimport perpustakaan berasingan untuk menyediakan fungsi asas seperti konsol I/O atau manipulasi rentetan. Kod yang ditulis dalam skop global adalah titik masuk ke program, oleh itu fungsi utama tidak diperlukan lagi. Juga ambil perhatian bahawa tiada koma bertitik di hujung setiap baris.

Pengenalan ini menyediakan maklumat yang mencukupi untuk memulakan pengekodan dalam Swift. Jangan risau jika anda tidak memahami sesuatu - kami akan menerangkan semuanya secara terperinci dalam bab seterusnya.

Komen
Untuk pemahaman yang lebih baik tentang bahan, kami mengesyorkan menggunakan mod taman permainan dalam Xcode. Taman permainan membolehkan anda melihat keputusan serta-merta semasa anda mengedit kod anda, tanpa perlu menyusun dan menjalankan aplikasi.
Jenis data mudah
Gunakan let untuk mencipta pemalar dan var untuk mencipta pembolehubah. Jenis pemalar tidak perlu dinyatakan; anda boleh menetapkan nilainya sekali sahaja.

Var myVariable = 42 myVariable = 50 biarkan myConstant = 42
Jenis pemalar dan pembolehubah mesti sepadan dengan jenis nilai sepadan yang diberikan kepada mereka. Walau bagaimanapun, ini tidak bermakna anda mesti menentukan jenisnya secara langsung. Pengkompil secara automatik akan menentukan jenis pemalar dan pembolehubah apabila memberikan nilai kepada mereka. Jadi, dalam contoh yang diberikan, pengkompil akan menentukan bahawa myVariable mempunyai jenis integer.

Jika pemula tiada atau tidak memberikan maklumat yang mencukupi, anda boleh menentukan sendiri jenis selepas pembolehubah, memisahkan nama dan taip dengan titik bertindih:

Biarkan implicitInteger = 70 biarkan inplicitDouble = 70.0 biarkan inplicitDouble: Double = 70

Mari bereksperimen
Cipta pemalar dengan Jenis terapung dan mulakannya dengan nombor 4.

Nilai tidak pernah ditukar secara tersirat kepada jenis lain. Jika anda perlu menukar nilai kepada jenis lain, lakukannya secara eksplisit:
let label = "The width is " let width = 94 let widthLabel = label + String(width)
Mari bereksperimen
Cuba alih keluar penukaran eksplisit kepada String dalam baris terakhir. Apakah ralat yang akan anda terima?

Cara yang lebih mudah untuk memasukkan nilai dalam rentetan ialah dengan melampirkan ungkapan dalam kurungan dan mendahuluinya dengan garis miring ke belakang (\). Contoh:

Biarkan epal = 3 biarkan oren = 5 biarkan appleSummary = "Saya ada \(epal) epal." let fruitSummary = "Saya mempunyai \(epal + oren) kepingan buah."

Mari bereksperimen
Cuba gunakan konstruk \() dan cetak rentetan termasuk hasil jumlah dua pembolehubah integer dan nama seseorang.

Apabila bekerja dengan tatasusunan dan tatasusunan bersekutu (kamus), kurungan segi empat sama () digunakan:

Var shoppingList = ["ikan keli", "air", "tulip", "cat biru"] shoppingList = "botol air" var occupations = [ "Malcolm": "Kapten", "Kaylee": "Mekanik", ] pekerjaan ["Jayne"] = "Perhubungan Awam"
Untuk mencipta tatasusunan atau kamus kosong, gunakan sintaks berikut:

Biarkan emptyArray = String() biarkan emptyDictionary = Kamus ()
Untuk mencipta tatasusunan dan kamus kosong, gunakan dan [:] masing-masing—contohnya, apabila anda menetapkan nilai baharu kepada pembolehubah atau menghantar hujah kepada fungsi.

ShoppingList = // Pergi membeli-belah dan membeli segala-galanya.

Keadaan dan kitaran
Pernyataan if dan switch digunakan untuk mencipta syarat, dan pernyataan for-in, for, while dan do-while digunakan untuk membuat gelung. Dalam kes ini, adalah tidak perlu untuk menyerlahkan syarat dan memulakan ungkapan dengan kurungan, manakala pendakap kerinting diperlukan.

Biarkan individualScores = var teamScore = 0 untuk skor dalam individualScores (jika skor > 50 ( teamScore += 3 ) lain ( teamScore += 1 ) ) teamScores
Keadaan di dalam pernyataan if mestilah boolean, yang secara khusus bermaksud bahawa pernyataan if score (...) ialah ralat kerana tiada perbandingan yang jelas (contohnya, dengan sifar).

Pernyataan if boleh digunakan bersama dengan let dan var untuk berfungsi dengan pemalar dan pembolehubah yang boleh mempunyai nilai nol. Pemalar dan pembolehubah sedemikian dipanggil pilihan (iaitu, ia boleh sama ada mengambil sebarang nilai atau sama dengan nol). Untuk mencipta pembolehubah pilihan atau pemalar, tambah tanda soal (?) selepas jenis.

Var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName ( salam = "Hello, \(name)")

Mari bereksperimen
Tukar optionalName kepada nil . Apa yang anda lihat pada skrin? Tambahkan blok lain untuk mengendalikan kes di mana optionalName is nil .

Jika nilai pilihan adalah nil , syarat tersebut akan menjadi palsu dan kod dalam pendakap kerinting selepas if tidak akan dilaksanakan. Jika tidak, pembolehubah sapaan akan diberikan nilai baharu.

Suis operator pilihan berbilang menyokong banyak operator perbandingan lain dalam dirinya sendiri dan tidak terhad kepada perbandingan mudah:

Biarkan sayur = "lada merah" bertukar sayur ( kes "saderi": biarkan sayurKomen = "Tambahkan sedikit kismis dan buat semut di atas kayu balak." kotak "timun", "lada air": biarkan sayurKomen = "Itu akan membuat sandwic teh yang baik ." case let x where x.hasSuffix("pepper"): let vegetableComment = "Adakah ia pedas \(x)?" lalai: let vegetableComment = "Semuanya sedap dalam sup." )

Mari bereksperimen
Cuba alih keluar syarat lalai. Apakah ralat yang akan anda terima?

Selepas melaksanakan blok kod yang sesuai, atur cara meninggalkan pernyataan suis tanpa menyemak syarat berikutnya. Dengan cara ini anda tidak perlu menambah penyataan rehat secara manual pada penghujung setiap blok kes.

Untuk mengulangi elemen tatasusunan bersekutu, gunakan pernyataan untuk masuk bersama-sama dengan menentukan sepasang nama untuk setiap pasangan nilai kunci.

Biarkan interestingNumbers = [ "Prime": , "Fibonacci": , "Square": , ] var largest = 0 untuk (jenis, nombor) dalam interestingNumbers ( untuk nombor dalam nombor ( jika nombor > terbesar ( terbesar = nombor ) ) ) terbesar

Mari bereksperimen
Tambah pembolehubah lain yang akan membolehkan anda mengetahui yang mana antara tiga jenis nombor maksimum yang ditemui.

Pernyataan gelung while membolehkan anda melaksanakan blok kod di dalamnya sehingga keadaan dinilai palsu. Keadaan ini juga boleh ditentukan selepas blok, yang dalam kes ini akan dilaksanakan mengikut sekurang-kurangnya sekali.

Var n = 2 manakala n< 100 { n = n * 2 } n var m = 2 do { m = m * 2 } while m < 100 m
Pernyataan for boleh digunakan untuk mengulangi urutan nombor menggunakan dua titik (..) atau menggunakan pemula, syarat dan kenaikan. Lihat, dua gelung ini melakukan perkara yang sama:

Var firstForLoop = 0 untuk i dalam 0..3 ( firstForLoop += i ) firstForLoop var secondForLoop = 0 untuk var i = 0; i< 3; ++i { secondForLoop += 1 } secondForLoop
Apabila membuat gelung, gunakan dua titik (..) jika anda tidak mahu memasukkan nilai yang lebih besar dalam julat dan tiga titik (...) untuk memasukkan kedua-dua nilai yang lebih kecil dan lebih besar.

Fungsi dan penutupan.
Untuk mengisytiharkan penggunaan fungsi kata kunci fungsi Fungsi dipanggil dengan menyatakan namanya dan senarai argumen dalam kurungan. Jenis pulangan harus dipisahkan daripada senarai hujah formal menggunakan -> .

Func greet(nama: String, day: String) -> String ( return "Hello \(name), today is \(day)." ) greet("Bob", "Selasa")

Mari bereksperimen
Alih keluar parameter hari. Sebaliknya, tambahkan pembolehubah yang menunjukkan nama hidangan yang dihidangkan untuk makan tengah hari.

Jika fungsi mengembalikan berbilang nilai, anda harus menggunakan tuple:

Fungsi getGasPrices() -> (Double, Double, Double) ( return (3.59, 3.69, 3.79) ) getGasPrices()
Fungsi juga boleh mempunyai bilangan argumen yang tidak ditentukan:

Func sumOf(nombor: Int...) -> Int ( var sum = 0 untuk nombor dalam nombor ( sum += number ) return sum ) sumOf() sumOf(42, 597, 12)

Mari bereksperimen
Tulis fungsi untuk mencari min aritmetik sebarang nombor hujah mereka.

Fungsi boleh bersarang antara satu sama lain. Fungsi bersarang boleh mengakses pembolehubah yang diisytiharkan dalam fungsi luar. Gunakan fungsi bersarang untuk mengemaskan kod fungsi kompleks atau besar.

Func returnFifteen() -> Int ( var y = 10 func add() ( y += 5 ) add() return y ) returnFifteen()
Fungsi ialah objek kelas pertama (jenis kelas pertama), dengan kata lain, fungsi boleh mengembalikan fungsi lain sebagai hasilnya.

Func makeIncrementer() -> (Int -> Int) ( func addOne(nombor: Int) -> Int ( return 1 + number ) return addOne ) var increment = makeIncrementer() increment(7)
Fungsi juga boleh mengambil fungsi lain sebagai salah satu hujahnya.

Func hasAnyMatches(senarai: Int, syarat: Int -> Bool) -> Bool ( untuk item dalam senarai ( jika syarat(item) ( return true ) ) return false ) func lessThanTen(nombor: Int) -> Bool ( return number< 10 } var numbers = hasAnyMatches(numbers, lessThanTen)
Fungsi ialah kes penutupan khas. Anda boleh membuat penutupan tanpa menyatakan nama dan dengan mengelilingi badan penutupan dengan pendakap kerinting (()). Untuk memisahkan hujah dan jenis pulangan daripada badan penutupan, gunakan operator dalam.

Numbers.map(( (nombor: Int) -> Int in let result = 3 * number return result ))

Mari bereksperimen
Tulis semula penutupan supaya ia mengembalikan sifar untuk semua nombor tambahan.

Terdapat beberapa teknik untuk membuat penutupan lebih ringkas. Jika jenis penutupan dikenali sebagai priori (contohnya, ia adalah panggilan balik perwakilan), anda boleh mengecualikan menentukan jenis parameternya dan/atau jenis nilai pulangan. Penutupan yang terdiri daripada satu ungkapan secara tersirat mengembalikan hasil ungkapan tersebut.

Numbers.map(( nombor dalam 3 * nombor ))
Dalam penutupan, bukannya menentukan nama pembolehubah, anda boleh menggunakannya nombor siri– ini amat berguna apabila menulis litar pintas. Penutupan, yang merupakan hujah terakhir fungsi, boleh dihantar kepadanya serta-merta selepas kurungan dengan senarai parameter yang tinggal.

Isih() ($0 > $1 )

Objek dan kelas
Untuk mencipta kegunaan kelas perkataan terpelihara kelas. Ahli kelas diisytiharkan dengan cara yang sama seperti pemalar dan pembolehubah biasa. Selain itu, kaedah kelas diisytiharkan sebagai fungsi biasa.

Bentuk Kelas ( var numberOfSides = 0 func simpleDescription() ->

Mari bereksperimen
Tambah pemalar ahli kelas dan kaedah kelas yang mengambilnya sebagai hujahnya.

Untuk mencipta contoh (objek) kelas, tambahkan kurungan selepas nama kelas. Kaedah dan ahli kelas diakses melalui titik.

Var shape = Shape() shape.numberOfSides = 7 var shapeDescription = shape.simpleDescription()
Dalam contoh ini, kami terlepas satu butiran penting - pembina kelas, kaedah init.

Class NamedShape ( var numberOfSides: Int = 0 var name: String init(name: String) ( self.name = name ) func simpleDescription() -> String ( return "A shape with \(numberOfSides) sides." )
Perhatikan bagaimana ahli kelas nama dipisahkan daripada hujah pembina nama dengan sendiri. Argumen dihantar kepada pembina dengan cara biasa, seperti mana-mana kaedah kelas lain. Ambil perhatian bahawa setiap ahli kelas mesti dimulakan, sama ada apabila diisytiharkan (seperti numberOfSides) atau dalam pembina (seperti nama).

Pemusnah kelas ialah kaedah deinit, yang boleh ditimpa jika perlu.

Untuk mewarisi kelas dari sudah kelas sedia ada, selepas menyatakan nama kelas kanak-kanak, anda harus meletakkan titik bertindih dan menunjukkan nama ibu bapa. Dalam Swift, tiada sekatan ke atas pewarisan mandatori mana-mana kelas standard.

Kaedah yang ditindih oleh kelas kanak-kanak mesti ditandakan dengan kata kunci penggantian - kaedah yang ditindih tanpa penggantian akan mengakibatkan ralat. Pengkompil juga mengesan kaedah yang ditandakan menimpa tetapi tidak mengatasi mana-mana kaedah kelas induknya.
class Square: NamedShape ( var sideLength: Double init(sideLength: Double, name: String) ( self.sideLength = sideLength super.init(name: name) numberOfSides = 4 ) func area() -> Double ( return sideLength * sideLength ) override func simpleDescription() -> String ( return "Segi empat sama dengan sisi panjang \(sideLength)." ) ) biarkan ujian = Square(sideLength: 5.2, nama: "my test square") test.area() test.simpleDescription ()

Mari bereksperimen
Buat kelas Bulatan dan warisi daripada kelas NamedShape. Pembina kelas Bulatan mengambil dua hujah: jejari dan nama. Gantikan kawasan dan huraikan kaedah kelas ini.

Ahli kelas juga boleh mempunyai pengambil dan penetap sendiri.

Segitiga Sama Sama Kelas: NamedShape ( var sideLength: Double = 0.0 init(sideLength: Double, name: String) ( self.sideLength = sideLength super.init(name: name) numberOfSides = 3 ) var perimeter: Double ( get ( return 3.0 * sideLength ) set ( sideLength = newValue / 3.0 ) ) override func simpleDescription() -> String ( return "Segitiga sama sisi dengan sisi panjang \(sideLength)." ) ) var triangle = EquilateralTriangle(sideLength: 3.1, name: "sebuah segitiga ") segitiga.perimeter segitiga.perimeter = 9.9 segitiga.sisiPanjang
Dalam penetap pembolehubah perimeter, nilai baharu yang diberikan secara tersirat dipanggil newValue . Anda boleh menukar nama pembolehubah ini dengan meletakkannya dalam kurungan serta-merta selepas ditetapkan.

Perhatikan struktur pembina kelas EquilateralTriangle. Kaedah ini merangkumi tiga langkah berurutan:

  1. memulakan ahli kelas kanak-kanak;
  2. memanggil pembina kelas induk;
  3. menukar nilai ahli kelas induk.
Jika anda perlu melaksanakan kod tertentu sebelum atau selepas memberikan nilai baharu kepada pembolehubah, anda boleh mengatasi kaedah willSet dan didSet untuk memenuhi keperluan anda. Sebagai contoh, kelas di bawah menjamin bahawa panjang sisi segi tiga akan sentiasa sama dengan panjang sisi segi empat sama.

Class TriangleAndSquare ( var triangle: EquilateralTriangle ( willSet ( square.sideLength = newValue.sideLength ) ) var square: Square ( willSet ( triangle.sideLength = newValue.sideLength ) ) init(saiz: Double, nama: String) ( square = Square( sisiPanjang: saiz, nama: nama) segi tiga = Segi Tiga Sama (Panjang Sisi: saiz, nama: nama) ) var triangleAndSquare = TriangleAndSquare(saiz: 10, nama: "bentuk ujian lain") segitigaAndSquare.square.sideLength triangleAndSquare.triangle.sideLength triangleAndSquare. segi empat sama = Segi empat (Panjang sisi: 50, nama: "segi empat lebih besar") segitigaDanSquare.triangle.sideLength
Kaedah kelas mempunyai satu perbezaan penting daripada fungsi. Nama argumen fungsi hanya digunakan dalam fungsi itu, manakala dalam kaedah kelas, parameter juga digunakan semasa memanggil kaedah itu (kecuali parameter pertama). Secara lalai, kaedah kelas mempunyai nama yang sama parameter apabila dipanggil dan secara dalaman. Walau bagaimanapun, anda boleh menentukan nama yang berbeza (dalam contoh di bawah - kali), yang akan digunakan hanya dalam kaedah ini. Dalam kes ini, untuk memanggil kaedah ini, anda mesti menggunakan nama pertama (numberOfTimes).

Pembilang Kelas ( var count: Int = 0 func incrementBy(amount: Int, numberOfTimes times: Int) ( count += amount * times ) ) var counter = Counter() counter.incrementBy(2, numberOfTimes: 7)
Apabila bekerja dengan nilai pilihan, tambahkan tanda soal (?) sebelum kaedah, ahli kelas, dsb. Jika nilai sebelum tanda soal adalah sifar, apa-apa selepas (?) diabaikan dan keseluruhan ungkapan adalah sifar. Jika tidak, ungkapan itu dinilai seperti biasa. Dalam kedua-dua kes, keseluruhan ungkapan akan menghasilkan nilai pilihan.

Biar optionalSquare: Square? = Square(sideLength: 2.5, name: "optional square") biarkan sideLength = optionalSquare?.sideLength

Penghitungan dan Struktur
Kata kunci enum digunakan untuk membuat penghitungan. Ambil perhatian bahawa penghitungan juga boleh mengandungi kaedah.

Kedudukan Enum: Int ( kes Ace = 1 kes Dua, Tiga, Empat, Lima, Enam, Tujuh, Lapan, Sembilan, Sepuluh kes Jack, Ratu, Raja fungsi mudahDescription() -> Rentetan ( tukar diri ( kes .Ace: kembalikan " ace" case .Jack: kembalikan "jack" case .Queen: kembalikan "queen" case .King: return "king" default: return String(self.toRaw()) ) ) ) biarkan ace = Rank.Ace biarkan aceRawValue = ace .toRaw()

Mari bereksperimen
Tulis fungsi yang membandingkan penghitungan 2 Kedudukan berdasarkan nilainya.

Dalam contoh di atas, elemen enum pada mulanya adalah jenis integer, dan anda hanya perlu menentukan nilai elemen pertama - nilai elemen yang tinggal akan ditentukan mengikut susunan ia muncul. Anda juga boleh memilih jenis rentetan atau sebenar sebagai nilai mentah nilai elemen.

Untuk menukar jenis nilai asal kepada jenis penghitungan, gunakan fungsi toRaw dan fromRaw.

Jika biarkan convertedRank = Rank.fromRaw(3) ( biarkan threeDescription = convertedRank.simpleDescription() )
Ambil perhatian bahawa nilai elemen penghitungan adalah sebenar, dan bukan sekadar representasi lain bagi nilai asalnya. Secara umumnya, anda tidak perlu menyatakan nilai asalnya.

Enum Suit ( case Spades, Hearts, Diamonds, Clubs func simpleDescription() -> String ( switch self ( case .Spades: kembalikan "spades" case .Hearts: kembalikan "hearts" case .Berlian: return "berlian" case .Clubs: pulangkan "kelab" ) ) ) biarkan hati = Suit.Hati biarkan hatiPenerangan = hati.simpleDescription()

Mari bereksperimen
Tambahkan kaedah Warna yang mengembalikan rentetan "hitam" untuk Spades dan Clubs dan "merah" untuk Hati dan Berlian.

Perhatikan cara ahli Hearts penghitungan Suit diakses. Apabila memberikan nilai kepada pemalar hati, nama penuh Suit.Hearts digunakan kerana kami tidak menyatakan secara eksplisit jenis pemalar. Dan dalam suis kita menggunakan bentuk pendek .Hearts kerana jenis nilai diri dikenali a priori. Anda boleh menggunakan borang pendek sepanjang jenis pembolehubah dinyatakan dengan jelas.

Kata kunci struct digunakan untuk membuat struktur. Structs mempunyai banyak persamaan dengan kelas, termasuk kaedah dan pembina. Salah satu perbezaan yang paling ketara antara struktur dan kelas ialah contoh struktur, tidak seperti contoh kelas, dihantar kepada fungsi mengikut nilai (iaitu, salinan tempatan mereka mula-mula dibuat), manakala contoh kelas diluluskan melalui rujukan.

Kad Struct ( var rank: Rank var suit: Suit func simpleDescription() -> String ( return "The \(rank.simpleDescription()) of \(suit.simpleDescription())") ) biarkan threeOfSpades = Card(rank: . Tiga, saman: .Spades) biarkan threeOfSpadesDescription = threeOfSpades.simpleDescription()

Mari bereksperimen
Tambahkan kaedah pada struktur Kad yang mencipta dek penuh kad.

Contoh ahli enumerasi boleh mempunyai nilai eigen dan mereka boleh berbeza. Anda menetapkan nilai ini apabila anda membuat instantiat enum (pemalar kejayaan dalam contoh). Nilai terikat dan asal adalah perkara yang berbeza: nilai asal Ahli enumerasi sentiasa malar merentasi semua kejadian penghitungan dan dinyatakan apabila ia diisytiharkan.

Mari kita pertimbangkan contoh menerima waktu matahari terbit dan terbenam daripada pelayan. Pelayan bertindak balas dengan sama ada maklumat yang berkaitan atau mesej ralat.

Enum ServerResponse ( case Result(String, String) case Error(String) ) biarkan berjaya = ServerResponse.Result("6:00 pagi", "8:09 malam") biarkan kegagalan = ServerResponse.Error("Kehabisan keju." ) switch success ( case let .Result(sunrise, sunset): let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)." case let .Error(error): let serverResponse = "Failure.. .\(ralat)")

Mari bereksperimen
Tambahkan pilihan ketiga pada pernyataan suis pilihan berganda

Perhatikan bagaimana waktu matahari terbit dan terbenam ditarik dari objek ServerResponse.
Protokol dan Sambungan.
Untuk mengisytiharkan protokol, gunakan kata kunci protokol.

Contoh ProtokolProtokol ( var simpleDescription: String ( get ) mutating func adjust() )
Protokol boleh disokong oleh kelas, penghitungan, dan struktur.

Kelas SimpleClass: ExampleProtocol ( var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() ( simpleDescription += " Now 100% adjusted." ) ) var a = SimpleClass() a.adjust( ) biarkan aDescription = a.simpleDescription struct SimpleStructure: ExampleProtocol ( var simpleDescription: String = "Struktur ringkas" mutasi func adjust() ( simpleDescription += " (adjusted)") ) var b = SimpleStructure() b.adjust() let bDeskripsi = b.simpleDescription

Mari bereksperimen
Buat enum yang akan melaksanakan protokol ini.

Perhatikan kata kunci bermutasi dalam definisi SimpleStructure, yang memberitahu pengkompil bahawa kaedah yang sepadan sedang mengubah suai struktur. Sebaliknya, kaedah kelas SimpleClass tidak perlu ditandakan sebagai bermutasi, kerana kaedah kelas sentiasa boleh mengubahnya tanpa gangguan.

Untuk menambah kaedah atau ahli kelas baharu pada jenis sedia ada, anda mesti menggunakan sambungan. Anda juga boleh menggunakan sambungan untuk melaksanakan protokol sudah jenis sedia ada, walaupun ia diimport daripada sesetengah perpustakaan atau rangka kerja.

Extension Int: ExampleProtocol ( var simpleDescription: String ( return "Nombor \(self)") mutasi func adjust() ( self += 42 ) ) 7.simpleDescription

Mari bereksperimen
Buat sambungan jenis Double dengan pembolehubah ahli absoluteValue .

Anda boleh menggunakan nama protokol seperti mana-mana jenis lain - contohnya, untuk mencipta pelbagai objek daripada jenis yang berbeza tetapi melaksanakan protokol biasa. Ambil perhatian bahawa apabila bekerja dengan objek jenis ini, kaedah yang diisytiharkan di luar protokol tidak akan tersedia.

Biarkan protocolValue: ExampleProtocol = a protocolValue.simpleDescription // protocolValue.anotherProperty // Nyahkomen untuk melihat ralat
Walaupun pembolehubah protocolValue adalah jenis SimpleClass pada masa jalan, pengkompil menganggap bahawa jenisnya ialah ExampleProtocol . Ini bermakna anda tidak akan dapat mengakses kaedah atau ahli kelas secara tidak sengaja yang dilaksanakan di luar ExampleProtocol.

Jenis generik
Untuk mencipta jenis generik, sertakan nama dalam kurungan sudut (<>).

Ulang fungsi (item: ItemType, times: Int) -> ItemType ( var result = ItemType() untuk i in 0..times ( result += item ) return result ) repeat("knock", 4)
Buat fungsi generik, kelas, penghitungan dan struktur.

// Laksanakan semula enum jenis pilihan perpustakaan standard Swift OptionalValue ( case None case Some(T) ) var possibleInteger: OptionalValue = .Tiada mungkinInteger = .Sesetengah(100)
Jika anda ingin menentukan keperluan khusus untuk jenis generik, seperti melaksanakan protokol atau memerlukannya untuk mewarisi daripada kelas tertentu, gunakan where .

Func anyCommonElements (lhs: T, rhs: U) -> Bool ( untuk lhsItem dalam lhs ( untuk rhsItem dalam rhs ( jika lhsItem == rhsItem ( return true ) ) ) return false ) anyCommonElements(, )

Mari bereksperimen
Ubah suai fungsi anyCommonElements untuk mengembalikan tatasusunan elemen biasa.

Dalam kes mudah, anda boleh meninggalkan tempat dan menulis protokol atau nama kelas selepas titik bertindih. Ungkapan adalah bersamaan dengan ungkapan .

Tidak lama dahulu, syarikat terkenal Apple memperkenalkan bahasa pengaturcaraan baharu yang dipanggil Swift. Bahasa baharu untuk membangunkan program pada IOS dan OS X, yang telah menyerap kualiti terbaik nenek moyangnya, iaitu bahasa C dan Objektif-C, sambil mengetepikan kelemahan utamanya.

Seperti yang dikatakan Apple, bahasa itu dicipta hampir dari awal dan menggunakan corak pengaturcaraan yang selamat, menggunakan fungsi moden, yang sepatutnya menjadikan proses mencipta aplikasi lebih cepat dan lebih mudah [sudah tentu, jika anda memahami bagaimana aplikasi ini harus dibuat secara umum].

Ngomong-ngomong, saya akan mengatakan bahawa bahasa itu muncul pada 2 Jun 2014, dan banyak tapak IT [seperti HUB] telah berjaya membincangkan semua kebaikan, keburukan dan sebagainya, bahasa ini. Keseluruhan penilaian bersetuju bahawa bahasa ini sangat menarik dan patut dipelajari.

Artikel ini adalah sejenis pengenalan kepada bahasa Swift, kerana saya bercadang untuk menulis lebih banyak pelajaran mengenainya, jadi jika anda berminat, kami akan mempelajarinya dengan anda.

Malangnya, atau mungkin bernasib baik, tiada sumber bahasa Rusia biasa yang boleh anda pelajari bahasa ini. Kerana, seperti yang semua orang tahu, 90% maklumat dikeluarkan di pasaran bahasa Inggeris dan semasa ia diterjemahkan ke dalam bahasa Rusia, ia akan kehilangan kaitannya, jadi satu-satunya cara untuk mengikuti perkembangan zaman ialah membaca buku dalam bahasa Inggeris.

Itulah yang saya rancang untuk lakukan. Tidak lama dahulu saya menghabiskan buku besar tentang bahasa C dan berfikir tentang beralih kepada Objektif-C, tetapi saya menyedari bahawa ia akan kehilangan kaitannya tidak lama lagi [jika tidak sepenuhnya, maka dalam beberapa bahagian], jadi pilihan jatuh pada Swift.

Selamat datang ke Swift

Ternyata, Swift telah dalam kerja-kerja selama beberapa tahun dan mungkin telah diilhamkan semasa zaman Jobs. Apple meletakkan asas untuk bahasa itu dalam proses mempromosikan infrastruktur pengkompil, penyahpepijat dan rangka kerjanya. Sistem pengurusan memori telah dipermudahkan dengan ketara menggunakan pengiraan rujukan automatik.

Terima kasih kepada Objective-C, yang mula menyokong blok, literal dan modul, ia menjadi mungkin untuk mencipta teknologi bahasa moden. Terima kasih kepada asas ini, Apple dapat mencipta bahasa baharu yang akan menjadi masa depan semua pembangunan perisian untuk Apple.

Mereka (pembangun) yang sudah biasa dengan Objective-C akan mendapati Swift agak biasa, kerana ia menggabungkan kebolehbacaan parameter yang baik dengan kuasa model objek dinamik nenek moyangnya. Bagi kebanyakan orang, ia akan menjadi kegembiraan yang besar bahawa Swift serasi dengan Objective-C dan boleh dibenamkan dalam kodnya. Dibina di atas asas yang sama, Swift menyediakan banyak ciri dan menyatukan aspek prosedur dan berorientasikan objek bahasa.

Nasib baik bagi kami, orang yang ingin belajar cara memprogram dalam Swift, bahasanya agak mesra dan tidak memerlukan IQ melebihi 200 untuk menguasai. Ini, seperti yang dikatakan oleh pembangun, adalah bahasa pertama yang mempunyai kuasa yang mencukupi dan pada masa yang sama menarik dan mudah seperti bahasa skrip [atau kerana ia juga dipanggil bahasa skrip].

Terdapat sokongan taman permainan, yang sangat sukar untuk diterjemahkan dengan secukupnya, tetapi jika anda menerangkan dalam kata mudah- ini adalah sokongan untuk fungsi yang membolehkan anda melihat aplikasi (program) yang anda cipta tanpa menyusun dan menjalankan projek.

Ia telah menyerap yang terbaik daripada semua bahasa pengaturcaraan dan keseluruhan budaya serta pengalaman jurutera Apple. Pengkompil XCode menggabungkan kualiti dan prestasi tinggi, dan bahasa dioptimumkan secara maksimum untuk pembangun, tanpa sebarang kompromi.

Jangkaan ialah menulis program pertama anda (iaitu "Hello, World") sepatutnya semudah menulis keseluruhan sistem pengendalian. Semua ini menjadikan Swift masa depan pembangunan untuk Apple dan seluruh dunia.

Swift ialah cara yang hebat untuk menulis apl untuk iOS dan OS X. Matlamat bahasa adalah bercita-cita tinggi, dan kami teruja untuk melihat perkara yang boleh anda buat dengannya!

Bahasa pengaturcaraan pantas - Apple

Itu sahaja, saya rasa cukup untuk pengenalan. Saya cuba menterjemahkan pengenalan dengan secukupnya dari buku berbahasa Inggeris tentang bahasa ini, pada masa yang sama mencairkannya dengan frasa daripada diri saya sendiri, saya harap ia ternyata tidak buruk. Jika anda berminat dengan bahasa ini, kemudian langgan kemas kini blog dan mula belajar bahasa ini dengan saya - semoga berjaya kepada semua orang.

Vasily Usov "Swift. Asas pembangunan aplikasi untuk iOS" St. Petersburg, 2016, 304 halaman (6.07 mb. pdf)

Buku ini menyediakan maklumat kepada pembangun tentang asas pengaturcaraan dalam Swift, bahasa pengaturcaraan yang direka khusus untuk mencipta aplikasi dalam . Ini adalah bahasa berorientasikan objek yang pantas, pintar, selamat, berfungsi - ia telah dicipta dan diperkenalkan pada tahun 2014 dan menjadi satu kejutan besar dan membuat percikan dalam persekitaran iOS. Hanya setahun berlalu, dan Apple mengemas kininya kepada versi 2.0, dan kemudian 2.1, yang termasuk beberapa inovasi penting.

Panduan praktikal yang dibentangkan mengandungi maklumat paling lengkap tentang teknologi pengaturcaraan dalam Swift. Sesiapa sahaja yang ingin belajar cara membuat aplikasi untuk iOS akan dapat menggunakan buku itu sebagai rujukan dan buku teks, secara praktikal tanpa beralih kepada penerbitan lain. Buku ini bukan sahaja memberi teori, tetapi juga menunjukkan penggunaan konstruk bahasa dalam kuantiti yang besar contoh. Dan untuk menyatukan pengetahuan dan lebih memahami semua selok-belok bahasa, pembaca dijemput untuk menyelesaikan beberapa tugas praktikal. Dengan mempelajari pengaturcaraan Swift, anda akan dapat membangunkan cekap dan aplikasi yang menarik untuk platform: iOS, OS X, tvOS atau watchOS. ISBN: 978-5-496-02256-9

Pengenalan 8
Mengenai Swift 9
Mengenai buku 10

Bahagian I: Memperkenalkan Xcode 13

Bab 1. Langkah pertama 14
1 .1 .Anda perlu Komputer Mac 14
1 .2 .Daftar sebagai pembangun Apple 14
1.3.Pasang Xcode 16

Bab 2. Projek persekitaran dan taman permainan Xcode 18
2.1.Pengenalan kepada Xcode 18
2.2.Antaramuka projek taman permainan 21
2.3.Kemungkinan projek taman permainan 23

Bahagian II. Ciri-ciri Asas pantas 27

Bab 3. Titik permulaan 28
3.1.Menetapkan dan menukar nilai 29
3.2.Pembolehubah dan pemalar 31
3.3.Peraturan untuk mengisytiharkan pembolehubah dan pemalar 34
3.4.Kesimpulan maklumat teks 35
3 .5 .Komen 37
3.6.Koma bertitik 39

Bab 4. Jenis data dan operasi dengan mereka 40
4.1.Jenis definisi jenis data 40
4.2.Jenis data berangka 43
4.3.Jenis data teks 56
4.4.Nilai logik 62
4.5. Jenis alias 65
4.6 Pengendali perbandingan 67

Bahagian III. Aset tetap pantas 69

Bab 5. Tuple 70
5.1.Maklumat asas tentang tupel 70
5.2 Interaksi dengan unsur tupel 72

Bab 6. Jenis pilihan data 78
6.1.Pilihan 78
6.2. Mendapatkan nilai pilihan 80

Bab 7. Kenyataan 83

Bab 8. Kawalan aliran. Bercabang 86
8.1 Operator bersyarat jika 86
8.2. Operator pengawal 97
8.3. Operator Julat 98
8.4 Suis operator bercabang 98

Bab 9. Jenis Koleksi 109
9.1. Tatasusunan 109
9.2.Set 120
9.3.Kamus 128

Bab 10. Kawalan aliran. Ulangan 135
10.1. Operator ulangan untuk 135
10.2. Operator pengulangan sambil dan ulang sambil 142
10.3.Pengurusan kitaran 144

Bab 11. Fungsi 148
11.1. Mengisytiharkan fungsi 148
11.2. Parameter input dan nilai pulangan 151
11.3. Badan fungsi sebagai nilai 162
11.4.Fungsi bersarang 163
11.5. Memuat semula fungsi 164
11.6. Panggilan fungsi rekursif 165

Bab 12. Penutupan 167
12.1. Berfungsi sebagai penutup 167
12.2 Ungkapan penutup 170
12.3. Pulangan tersirat nilai 171
12.4. Nama parameter diringkaskan 172
12.5.Pembolehubah-penutup 174
12.6 Menangkap pembolehubah 175
12.7 Kaedah untuk menyusun tatasusunan 176

Bahagian IV. Ciri-ciri bukan remeh bagi Swift 178

Bab 13. OOP sebagai asas 180
13.1.Kejadian 180
13.2.Ruang nama 182

Bab 14. Pemindahan 184
14.1.Sintaks penghitungan 184
14.2. Parameter yang berkaitan 187
14.3 Pernyataan tukar untuk penghitungan 189
14.4.Nilai bersekutu ahli penghitungan 190
14.5. Sifat dalam penghitungan 192
14.6.Kaedah dalam penghitungan 193
14 .7 .pengendali diri 194
14.8. Penghitungan rekursif 195

Bab 15. Struktur 199
15.1.Sintaks untuk mengisytiharkan struktur 199
15.2. Sifat dalam struktur 200
15.3. Struktur sebagai ruang nama 202
15.4.Pemula tersuai 203
15.5.Kaedah dalam struktur 204

Bab 16. Kelas 206
16.1.Sintaks kelas 207
16.2. Sifat-sifat kelas 207
16.3.Kaedah Kelas 210
16.4.Pemula kelas 211
16.5.Jenis bersarang 212

Bab 17. Hartanah 214
17.1.Jenis harta 214
17.2.Kawalan menerima dan menetapkan nilai 216
17.3.Sifat jenis 220

Bab 18. Subskrip 223
18.1.Tujuan subskrip 223
18.2.Sintaks subskrip 224

Bab 19. Warisan 229
19.1.Sintaks warisan 229
19.2.Mentakrifkan semula unsur yang diwarisi 231
19.3. Pengubah suai pencegahan akhir 234
19.4. Penggantian contoh kelas 235
19.5. Jenis tuangan 235

Bab 20. Alias ​​Mana-mana dan Mana-mana 238
20 .1 .Nama panggilan Mana-mana 238
20.2.Alias ​​​​AnyObject 240

Bab 21. Pemula dan penyahinisiatif 241
21.1.Pemula 241
21.2.Penyahinisiatif 248

Bab 22. Mengalih keluar Instans dan ARC 250
22.1. Pemusnahan salinan 250
22.2.Memori bocor 252
22.3.Pengiraan rujukan automatik 255

Bab 23. Rantai pilihan 258
23.1. Mengakses sifat melalui rantai pilihan 258
23.2 Menetapkan nilai melalui rantai pilihan 260
23.3.Akses kepada kaedah melalui rantai pilihan 261

Bab 24. Sambungan 262
24.1 Sifat dikira dalam sambungan 263
24.2.Pemula dalam sambungan 264
24.3.Kaedah dalam sambungan 265
24.4.Subskrip dalam sambungan 266

Bab 25. Protokol 267
25.1. Harta yang diperlukan 268
25.2. Kaedah yang diperlukan 269
25.3.Pemula yang diperlukan 270
25.4.Protokol sebagai jenis data 271
25.5.Pelanjutan dan protokol 271
25.6. Pewarisan protokol 272
25.7. Protokol kelas 273
25.8.Komposisi protokol 274

Bab 26. Jenis dan pengambilan data bukan standard maklumat rujukan 275

Bab 27. Templat universal 283
27 .1 .Ciri Serbaguna 283
27.2.Jenis universal 285
27.3. Sekatan jenis 287
27.4. Sambungan jenis universal 288
27.5.Jenis berkaitan 288

Bab 28. Ralat pemprosesan 291
28.1. Kesilapan melontar 291
28.2. Ralat pengendalian 292
28.3 Tindakan pembersihan tertunda 297

Bab 29. Penggunaan pengendali yang tidak remeh 298
29.1.Fungsi pengendali 298
29.2. Operator Tersuai 301

Muat turun buku secara percuma 6.07 MB. pdf

Chris Lattner menghabiskan satu setengah tahun mencipta bahasa pengaturcaraan baharu. Selama ini, dia tidak bercakap tentang kerjanya kepada sesiapa, walaupun di kalangan kawan rapat. Dia mula bekerja pada musim panas 2010, menumpukan malam dan hujung minggu untuk tugas itu, dan menjelang akhir tahun berikutnya dia telah membangunkan asas bahasa masa depan. Barulah Chris mendedahkan rahsianya dalam syarikat itu, yang pengurus tertingginya cukup kagum untuk menambah beberapa jurutera berpengalaman ke dalam projek itu. Satu setengah tahun kemudian, projek Lattner telah dimasukkan dalam senarai hala tuju utama syarikat, dan pasukan pembangunan berkembang dengan ketara. Hari ini, bahasa baharu sedang dalam perjalanan untuk mengubah dunia komputer. Syarikat Chris Lattner bekerja dipanggil Apple, dan bahasa yang dia cipta dipanggil Swift.

2 Jun 2014 di Persembahan WWDC Bahasa pantas. Syarikat itu telah mengeluarkan versi ujian untuk pembangun dan pengaturcara pihak ketiga, meletakkan bahasa sebagai cara yang lebih pantas dan lebih cekap untuk mencipta program untuk iPhone, iPad dan Mac. Walaupun selepas Chris Lattner mula mengusahakan Swift, maklumat tentang produk itu mengejutkan semua orang kecuali bilangan pekerja Apple yang terhad. Malah orang yang terlibat secara tidak langsung dalam penciptaan bahasa dan membantu Chris sangat terkejut apabila mengetahui pada musim panas ini apa sebenarnya yang dia sedang usahakan.

Swift Menangkap Khalayak

Ia biasanya memerlukan bahasa baharu beberapa tahun selepas pengenalannya untuk mendapatkan mana-mana khalayak. Peraturan ini terpakai walaupun untuk sedemikian syarikat besar, seperti Apple. Contoh yang baik ialah syarikat Google dengan bahasa Go yang diperkenalkan pada tahun 2009. Fikiran paling cemerlang dalam dunia pembangunan perisian, Ken Thompson dan Rob Pike, mengusahakan Go, tetapi sehingga hari ini banyak usaha dilakukan untuk memastikan bahasa itu mempunyai pengikut. Tetapi Swift adalah baka binatang yang berbeza. Sebaik sahaja bahasa itu dikeluarkan secara rasmi pada musim luruh ini, ia dijangka mendapat khalayak pada kadar yang tidak pernah berlaku sebelum ini, melebihi kadar penggunaan bahasa seperti Java dan C# pada tahun 1990 dan awal 2000-an.

Bagaimanakah andaian optimistik itu dapat dijelaskan? Malah, Swift direka untuk pengaturcara biasa. Malah aplikasi yang paling mudah boleh ditulis dalam bahasa, dan dengan beberapa alatan yang cukup pintar, bahasa ini menawarkan cara yang berkesan untuk belajar menulis sendiri. Tetapi sebab utama populariti masa depan bahasa itu terletak di tempat lain. Ratusan ribu pembangun hari ini mencipta aplikasi untuk peranti Apple menggunakan Objective-C. Peranti Apple sangat popular, yang bermaksud pembangun ini akan terus mencipta aplikasi untuk mereka, tetapi dalam Swift, kerana ia jauh lebih baik dan lebih cekap daripada Objektif-C.

“Tiada insentif sebenar untuk menggunakan Google Go,” kata Paul Jansen, yang telah menjejaki kemajuan pelbagai bahasa pengaturcaraan selama kira-kira lima belas tahun. "Apa yang membuatkan Swift berbeza ialah insentif."

Hari ini di GitHub, storan popular pembangunan sumber terbuka, lebih daripada 2,400 projek menggunakan Swift. Ia adalah bernilai mengingati bahawa pada masa ini bahasa yang tersedia sahaja bilangan terhad pengaturcara.

Kelebihan berbanding Objektif-C

Untuk meninggalkan bahasa di mana beberapa produk telah ditulis dan mula mempelajari bahasa baharu, pengaturcara memerlukan alasan yang sangat baik. Pembelajaran semula memerlukan masa dan usaha, dan sehingga kini Chris Lattner adalah satu-satunya orang yang mempunyai pengalaman pengaturcaraan Swift selama empat tahun. Walau bagaimanapun, alasan yang sangat menarik ini telah pun dibentangkan.

Bukannya Swift jauh lebih menarik daripada bahasa lain seperti C#, Ruby atau Python, Swift jauh lebih menarik daripada Objective-C, yang hampir tidak boleh dipanggil bahasa moden. Sintaks pantas lebih akrab. Bahasa ini juga mengandungi beberapa alat untuk melindungi daripada ralat dan pepijat. Swift lebih memahami tindakan pengekod dan menjadikan kerjanya lebih cekap, membolehkannya melakukan lebih banyak dalam masa yang singkat. Tetapi aspek bahasa yang paling menarik ialah apa yang dipanggil Taman Permainan.

Taman permainan

Taman permainan direka untuk menjadikan pengaturcaraan lebih interaktif dan mudah diakses. Ideanya ialah apabila seorang pengaturcara menulis kod pada separuh skrin, dia melihat hasilnya pada separuh lagi. Oleh itu, anda boleh melihat penciptaan program dalam masa nyata. Apabila pengaturcara membuat perubahan pada kod, ia juga dibuat kepada versi program yang sedang berjalan, menghapuskan keperluan untuk kompilasi berulang dan dimulakan semula.

Pendekatan untuk menulis kod ini bukan sahaja akan memudahkan kerja pengaturcara, ia akan mengubah cara kita berfikir tentang pengaturcaraan, membawanya ke tahap pemahaman yang baharu. Chris Lattner juga berharap dengan menjadikan pengekodan lebih mudah dan menyeronokkan, dia akan membantu mentakrifkan semula cara sains komputer diajar hari ini.

Lebih daripada bahasa

Chris Lattner, pencipta Swift, menyelia semua alat pembangun Apple. Semua yang digunakan untuk mencipta program untuk telefon, tablet dan komputer epal, kedua-dua pemaju pihak ketiga dan jurutera syarikat. Sebagai pelajar siswazah di Universiti Illinois, dia mencipta sejenis alat pembangun yang dipanggil LLVM, yang merupakan asas Xcode hari ini.

Apple menggunakan LLVM untuk menukar cara Objective-C digunakan untuk mencipta aplikasi. Ini berlaku selepas Lattner menyertai Apple pada tahun 2005, dan lima tahun kemudian dia menggunakan LLVM sebagai asas untuk Swift. Kedua-dua produk ini telah direka khusus untuk berfungsi seiring. Dalam erti kata lain, Swift bukan sekadar bahasa, ia adalah bahasa yang berkait rapat dengan semua yang diperlukan oleh pembangun untuk melakukan tugas mereka. Ini termasuk bukan sahaja persekitaran pembangunan bersepadu, tetapi juga banyak alat lain yang sudah biasa digunakan oleh setiap pembangun Apple, seperti penyahpepijat. Dalam erti kata lain, terdapat sebab mengapa puluhan ribu pengaturcara sepatutnya sudah menulis aplikasi Swift.

Kelajuan

Ini betul-betul perkataan yang paling menggambarkan pelbagai kualiti bahasa Swift baharu. Bahasa ini menunjukkan kelajuan yang menakjubkan dalam menukar kod mentah kepada aplikasi boleh laku. Kelajuan aplikasi ini pada telefon dan tablet sepatutnya mengejutkan. Swift bukan sahaja mesra manusia, tetapi juga mesra komputer. Dan kualiti ketiga, yang telah kita bincangkan, adalah kelajuan penyebaran.

Apple bukanlah syarikat pertama yang memasuki cincin ini. Ia sudah mempunyai , Google dan Mozilla. Dalam beberapa cara, bahasa syarikat ini telah pergi lebih jauh, kerana mereka sudah digunakan untuk kerja dalaman. Lebih-lebih lagi, kebanyakannya adalah sumber terbuka, yang menjadikannya lebih mudah untuk diedarkan kepada syarikat lain. Apple terkenal dengan kawalan ketat ke atas produknya sendiri, dan pada masa ini sumber ditutup, yang boleh, sebagai contoh, menyukarkan untuk membuat program merentas platform. Walau bagaimanapun, dipercayai bahawa Swift akhirnya akan menjadi sumber terbuka.

Tidak kira sama ada Swift adalah sumber terbuka atau tidak, ia diramalkan mempunyai kadar populariti dan penerimaan yang belum pernah terjadi sebelumnya. Keunikan bahasa, serta populariti produk Apple, sudah pasti akan melaksanakan tugas mereka.

Berdasarkan Wired

Apple telah memperkenalkan bahasa pengaturcaraan baharu, Swift. Mari kita fikirkan mengapa ia diperlukan dan mengapa pemaju menaruh harapan yang tinggi untuknya.

Apakah Swift?

Ia ialah bahasa pengaturcaraan baharu yang dibangunkan oleh Apple untuk mencipta aplikasi untuk iOS dan OS X. Ia dibina di atas C dan Objektif-C, tetapi lebih ringkas dan lebih fleksibel. Di samping itu, pencipta Swift meminjam unsur bahasa terbaik pengaturcaraan Javascript dan Python.

Bagaimanakah ia lebih baik daripada bahasa pengaturcaraan lain?


Pembangun Apple cuba mencipta bahasa paling moden yang mungkin: Swift adalah pantas (kelajuan pelaksanaan beberapa algoritma adalah 3.9 kali lebih cepat daripada Python) dan ringkas (pembangun menyingkirkan verbositas Objektif-C). Satu lagi inovasi penting ialah keupayaan untuk menulis kod dan melihat hasilnya dalam masa nyata. Sebelum ini, untuk masa yang lama, proses mencipta produk dan produk itu sendiri dipisahkan, dan kerana ini, pengaturcara terpaksa menghabiskan banyak masa menyemak dan mengoptimumkan kod. Dalam Swift, mereka boleh membuat pelarasan dan melihat hasilnya dengan segera. Ini bermakna pembangun boleh menguji konsep mereka dengan lebih pantas dan membina apl secara keseluruhan dengan lebih pantas.

Bagaimana untuk belajar memprogram dalam bahasa ini?


Serentak dengan pelepasan Epal Swift mengeluarkan buku tentangnya, yang boleh dimuat turun secara percuma dari iTunes Store. Berdasarkan reaksi pakar, ramai daripada mereka membacanya dalam beberapa jam pertama selepas pembentangan bahasa di WWDC, dalam minggu-minggu akan datang kita boleh menjangkakan beratus-ratus tutorial video dan perbincangan - yang pertama orang ramai telah pun muncul.

Kenapa Apple?

Pertama, Swift ialah respons Apple terhadap kemunculan bahasa pengaturcaraan yang dibangunkan oleh pesaing Google. Sejak pengenalan OS X, Apple hanya menggunakan Objective-C, dan ketibaan Swift adalah satu langkah besar ke masa hadapan. Kedua, dengan mencipta bahasa yang mudah dan moden, Apple berharap dapat menarik bukan sahaja pembangun berpengalaman yang sudah tahu cara bekerja dengan Objective-C dan C, tetapi juga pemula yang mungkin akan memanfaatkan peluang ini dan mula mempelajari Swift. Pasaran aplikasi akan berkembang semula, yang bermaksud pengaruh Apple akan meningkat.

Flappy Bird telah pun dicipta semula dalam Swift dan disiarkan di GitHub

Apa kata pakar?

Anton Domashnev

Pembangun iOS Look At Media

"Ramai pengaturcara iOS dan OS X mengimpikan bahasa sedemikian, kerana ia lebih mudah daripada Objektif-C, tetapi saya tidak boleh mengatakan bahawa Objektif-C adalah bahasa yang tidak baik dan sangat memerlukan penggantian. Walau bagaimanapun, saya pasti menyukai hakikat bahawa Swift lebih mudah dibaca, dan kod yang ditulis dalam Swift akan menjadi beberapa kali lebih pendek daripada kod serupa dalam Objective-C, yang akan meningkatkan kelajuan pembangunan. Berdasarkan apa yang saya lihat di WWDC, kita boleh menjangkakan ledakan dalam permainan untuk iOS, kerana Apple memperkenalkan utiliti Taman Permainan Interaktif yang sangat menarik, yang akan membantu meningkatkan minat dalam membangunkan permainan untuk peranti Apple. Hari ini saya akan mula membaca tutorial tentang bahasa ini - berdasarkan apa yang ditunjukkan pada pembentangan, peralihan kepada Swift tidak akan sukar, kerana banyak binaan adalah serupa dengan yang kita gunakan sekarang dalam pembangunan Objektif-C. Saya akan menulis projek baharu saya di Swift.”

Vladimir Bobrov

CTO Tengok Media

“Sudah tentu, keluaran Swift adalah langkah yang bagus untuk Apple dan komuniti pembangun. Bahasa baru akan menarik Kuantiti yang besar pembangun dengan mengurangkan halangan untuk masuk ke dalam ekosistem pembangunan Apple, yang agak tinggi disebabkan oleh bahasa Objective-C. Selain itu, set alat yang dicadangkan (Taman Permainan Interaktif, REPL) akan membolehkan anda menyahpepijat program dan permainan anda dengan cepat. Saya percaya bahawa ciri-ciri bahasa Swift dan sokongan besar daripada Apple akan membolehkannya mencapai populariti besar di kalangan pembangun perisian yang tertumpu kepada pengguna massa."

Apa lagi?

Anda boleh menggunakan emoji dalam Swift.