发布于 2017-05-20 01:24:54 | 187 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Swift教程,程序狗速度看过来!

Swift编程语言

SWIFT,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。


一位国外的程序员认为 Swift 的语法与 Kotlin 相似,并整理了一些 Swift 和 Kotlin 的对比,下面是一些例子,大家不妨也看看。

BASICS

Hello World

Swift

print("Hello, world!")

Kotlin

println("Hello, world!")

变量和常量

Swift

var myVariable = 42  myVariable = 50  let myConstant = 42

Kotlin

var myVariable = 42  myVariable = 50  val myConstant = 42

显式类型

Swift

let explicitDouble: Double = 70

Kotlin

val explicitDouble: Double = 70.0

强制类型转换

Swift

let label = "The width is "  let width = 94  let widthLabel = label + String(width)

Kotlin

val label = "The width is "  val width = 94  val widthLabel = label + width

字符串插值

Swift

let apples = 3  let oranges = 5  let fruitSummary = "I have (apples + oranges) " +                     "pieces of fruit."

Kotlin

val apples = 3  val oranges = 5  val fruitSummary = "I have ${apples + oranges} " +                     "pieces of fruit."

范围操作符

Swift

let names = ["Anna", "Alex", "Brian", "Jack"]  let count = names.count  for i in 0..<count {      print("Person (i + 1) is called (names[i])")  }  // Person 1 is called Anna  // Person 2 is called Alex  // Person 3 is called Brian  // Person 4 is called Jack

Kotlin

val names = arrayOf("Anna", "Alex", "Brian", "Jack")  val count = names.count()  for (i in 0..count - 1) {      println("Person ${i + 1} is called ${names[i]}")  }  // Person 1 is called Anna  // Person 2 is called Alex  // Person 3 is called Brian  // Person 4 is called Jack

包罗广泛的范围操作符(Inclusive Range Operator)

Swift

for index in 1...5 {      print("(index) times 5 is (index * 5)")  }  // 1 times 5 is 5  // 2 times 5 is 10  // 3 times 5 is 15  // 4 times 5 is 20  // 5 times 5 is 25

Kotlin

for (index in 1..5) {      println("$index times 5 is ${index * 5}")  }  // 1 times 5 is 5  // 2 times 5 is 10  // 3 times 5 is 15  // 4 times 5 is 20  // 5 times 5 is 25

BASICS

数组

Swift

var shoppingList = ["catfish", "water",      "tulips", "blue paint"]  shoppingList[1] = "bottle of water"

Kotlin

val shoppingList = arrayOf("catfish", "water",      "tulips", "blue paint")  shoppingList[1] = "bottle of water"

映射

Swift

var occupations = [      "Malcolm": "Captain",      "Kaylee": "Mechanic",  ]  occupations["Jayne"] = "Public Relations"

Kotlin

val occupations = mutableMapOf(      "Malcolm" to "Captain",      "Kaylee" to "Mechanic"  )  occupations["Jayne"] = "Public Relations"

空集合

Swift

let emptyArray = [String]()  let emptyDictionary = [String: Float]()

Kotlin

val emptyArray = arrayOf<String>()  val emptyMap = mapOf<String, Float>()

FUNCTIONS

函数

Swift

func greet(_ name: String,_ day: String) -> String {      return "Hello (name), today is (day)."  }  greet("Bob", "Tuesday")

Kotlin

fun greet(name: String, day: String): String {      return "Hello $name, today is $day."  }  greet("Bob", "Tuesday")

元组返回

Swift

func getGasPrices() -> (Double, Double, Double) {      return (3.59, 3.69, 3.79)  }

Kotlin

data class GasPrices(val a: Double, val b: Double,       val c: Double)  fun getGasPrices() = GasPrices(3.59, 3.69, 3.79)

参数的变量数目(Variable Number Of Arguments)

Swift

func sumOf(_ numbers: Int...) -> Int {      var sum = 0      for number in numbers {          sum += number      }      return sum  }  sumOf(42, 597, 12)

Kotlin

fun sumOf(vararg numbers: Int): Int {      var sum = 0      for (number in numbers) {          sum += number      }      return sum  }  sumOf(42, 597, 12)    // sumOf() can also be written in a shorter way:  fun sumOf(vararg numbers: Int) = numbers.sum()

函数类型

Swift

func makeIncrementer() -> (Int -> Int) {      func addOne(number: Int) -> Int {          return 1 + number      }      return addOne  }  let increment = makeIncrementer()  increment(7)

Kotlin

fun makeIncrementer(): (Int) -> Int {      val addOne = fun(number: Int): Int {          return 1 + number      }      return addOne  }  val increment = makeIncrementer()  increment(7)    // makeIncrementer can also be written in a shorter way:  fun makeIncrementer() = fun(number: Int) = 1 + number

映射

Swift

let numbers = [20, 19, 7, 12]  numbers.map { 3 * $0 }

Kotlin

val numbers = listOf(20, 19, 7, 12)  numbers.map { 3 * it }

排序

Swift

var mutableArray = [1, 5, 3, 12, 2]  mutableArray.sort()

Kotlin

listOf(1, 5, 3, 12, 2).sorted()

命名参数

Swift

func area(width: Int, height: Int) -> Int {      return width * height  }  area(width: 2, height: 3)

Kotlin

fun area(width: Int, height: Int) = width * height  area(width = 2, height = 3)    // This is also possible with named arguments  area(2, height = 2)  area(height = 3, width = 2)

CLASSES

声明

Swift

class Shape {      var numberOfSides = 0      func simpleDescription() -> String {          return "A shape with (numberOfSides) sides."      }  }

Kotlin

class Shape {      var numberOfSides = 0      fun simpleDescription() =          "A shape with $numberOfSides sides."  }

用法

Swift

var shape = Shape()  shape.numberOfSides = 7  var shapeDescription = shape.simpleDescription()

Kotlin

var shape = Shape()  shape.numberOfSides = 7  var shapeDescription = shape.simpleDescription()

子类

Swift

class NamedShape {      var numberOfSides: Int = 0      let name: String        init(name: String) {          self.name = name      }        func simpleDescription() -> String {          return "A shape with (numberOfSides) sides."      }  }    class Square: NamedShape {      var sideLength: Double        init(sideLength: Double, name: String) {          self.sideLength = sideLength          super.init(name: name)          self.numberOfSides = 4      }        func area() -> Double {          return sideLength * sideLength      }        override func simpleDescription() -> String {          return "A square with sides of length " +  	       sideLength + "."      }  }    let test = Square(sideLength: 5.2, name: "square")  test.area()  test.simpleDescription()

Kotlin

open class NamedShape(val name: String) {      var numberOfSides = 0        open fun simpleDescription() =          "A shape with $numberOfSides sides."  }    class Square(var sideLength: BigDecimal, name: String) :          NamedShape(name) {      init {          numberOfSides = 4      }        fun area() = sideLength.pow(2)        override fun simpleDescription() =          "A square with sides of length $sideLength."  }    val test = Square(BigDecimal("5.2"), "square")  test.area()  test.simpleDescription()

类型检查

Swift

var movieCount = 0  var songCount = 0    for item in library {      if item is Movie {          movieCount += 1      } else if item is Song {          songCount += 1      }  }

Kotlin

var movieCount = 0  var songCount = 0    for (item in library) {      if (item is Movie) {          ++movieCount      } else if (item is Song) {          ++songCount      }  }

模式匹配

Swift

let nb = 42  switch nb {      case 0...7, 8, 9: print("single digit")      case 10: print("double digits")      case 11...99: print("double digits")      case 100...999: print("triple digits")      default: print("four or more digits")  }

Kotlin

val nb = 42  when (nb) {      in 0..7, 8, 9 -> println("single digit")      10 -> println("double digits")      in 11..99 -> println("double digits")      in 100..999 -> println("triple digits")      else -> println("four or more digits")  }

类型向下转换

Swift

for current in someObjects {      if let movie = current as? Movie {          print("Movie: '(movie.name)', " +              "dir. (movie.director)")      }  }

Kotlin

for (current in someObjects) {      if (current is Movie) {          println("Movie: '${current.name}', " +  	    "dir. ${current.director}")      }  }

协议

Swift

protocol Nameable {      func name() -> String  }    func f<T: Nameable>(x: T) {      print("Name is " + x.name())  }

Kotlin

interface Nameable {      fun name(): String  }    fun f<T: Nameable>(x: T) {      println("Name is " + x.name())  }

扩展

Swift

extension Double {      var km: Double { return self * 1_000.0 }      var m: Double { return self }      var cm: Double { return self / 100.0 }      var mm: Double { return self / 1_000.0 }      var ft: Double { return self / 3.28084 }  }  let oneInch = 25.4.mm  print("One inch is (oneInch) meters")  // prints "One inch is 0.0254 meters"  let threeFeet = 3.ft  print("Three feet is (threeFeet) meters")  // prints "Three feet is 0.914399970739201 meters"

Kotlin

val Double.km: Double get() = this * 1000  val Double.m: Double get() = this  val Double.cm: Double get() = this / 100  val Double.mm: Double get() = this / 1000  val Double.ft: Double get() = this / 3.28084    val oneInch = 25.4.mm  println("One inch is $oneInch meters")  // prints "One inch is 0.0254 meters"  val threeFeet = 3.0.ft  println("Three feet is $threeFeet meters")  // prints "Three feet is 0.914399970739201 meters"

来源:http://nilhcem.com/swift-is-like-kotlin/



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务