彩 乐 园 代 理 - 彩 乐 园 代 理

  彩 乐 园 代 理 - 彩 乐 园 代 理 -Q在这【1665812666 】【1665812666 】【待遇,一步到位】继WWDC2014后,新的编程语言Swift浮出水面,它具有快速、现代、安全、可交互等特征,并且其语法简单,入门门槛低,有望替代语法复杂难懂的Objective-C语言。据其作者Chris Lattner在博客上声称,该语言开发只用了4年时间,并且底层框架基本上都是由其一人开发完成。
  按照惯例,先用Swift来编写一个简单的"Hello World"
  println("Hello World")
  没错,就这么简单,没有IMPORT语句,没有main函数,也没有@符号,分号也不是必须的。编译运行可以看到控制台打印的Hello World字样。
  这里的println是全局函数,负责打印参数内容,并换行。
  Swift可以说是融合其他优秀编程语言的结果,因此许多语法都和其他语言存在共同之处。下面将简单介绍一下该语言的一部分内容:
  1. Swift用var声明变量,用let声明常量,如
  var legs = 4 // 变量legs
  let PI = 3.1415926 // 常量PI
  彩 乐 园 代 理 - 彩 乐 园 代 理 -Q在这【1665812666 】【1665812666 】【待遇,一步到位】那么legs和PI到底是什么类型呢?答案是Type Inference(类型推测),由于这两个语句在声明的同时并且初始化,因为4是Int类型,因此推测变量legs为Int类型,同理,3.1415926为Double类型,因此推测PI为Double类型。也可以强制规定类型:
  var legs:Int
  let PI:Double
  若legs变量是整数类型,只需在变量名后添加冒号,紧接着跟随一个类型名即可。
  2. 赋值运算符没有返回值,而在其他一些语言中,赋值运算符返回的是变量的值,(如 a = 5 表达式返回5),而作为新手在做条件判断时,经常用赋值运算符来代替"==",导致一些很难发现的逻辑错误,而在Swift中不会出现这种情况,因为这是一个语法错误,在编译期间会给出错误信息,如 if a = 5 { ... } ,if接受的是一个Bool值,而a = 5没有返回值,因此会出错。
  /* In Java */
  int a = 1;
  if(a = 5) { ... } // Compile Success
  /* In Swift */
  var a = 1
  if a = 5 { ... } // Compile error
  // if a == 5 {...} This is correct one
  3. switch语句的case后不用加break。这也是其他语言新手经常犯的一个错误,而在Swift中,switch选择的case语句执行完毕后立即跳出switch语句,而不会因为语句后没有break继续执行后面的case或者default语句。
  var a = 1
  switch a {
  case 1: println(1)
  case 2: println(2)
  default: println(3)
  }
  // no break at all
  4. 可以用n..m 或者 n...m 代替一个数组,比如:
  for index in 0..3 { println(index) }
  // 0
  // 1
  // 2
  ..代表前闭后开,...代表前后都闭合,所以0..3代表数组[0,1,2],而0...3代表[0,1,2,3]
  5. 如何在字符串中插入变量或常量呢?Swift提供一个特殊的语法:
  var number = 5
  println("I got \(number) books")
  // I got 5 books
  彩 乐 园 代 理 - 彩 乐 园 代 理 -Q在这【1665812666 】【1665812666 】【待遇,一步到位】是不是很简单,只需在字符串中用\(和)包裹你要插入的变量或常量即可。
  6. 在Swift中,存在两种类型,一种是引用类型(reference type),一种是值类型(value type),class是引用类型,而enumeration和struct是值类型,它们的一个重要区别是传递的方式不一样,一个是传递副本,一个是传递本身。
  在Swift中,class的样子是:
  class Vehicle {
  var wheels:Int?
  var maxPassengers:Int?
  func description() -> String {
  return "This vehicle has \(wheels!) wheels,max passengers is \(maxPassengers!) " }
  init(withWheels wheels:Int,andMaxPassengers maxPassengers:Int) {
  self.wheels = wheels
  self.maxPassengers = maxPassengers }
  deinit { }
  }
  该类名为Vehicle,声明了两个属性,wheels和maxPassengers。以及一个实例方法description,该方法没有参数,返回值为字符串类型。同时,该类提供一个初始化方法,init是关键字,该方法接受两个参数,代表之前声明的两个属性。该参数包括三个部分,分别是外部参数名(external parameter name),局部参数名(local parameter name)以及参数类型,在方法调用里会用到外部参数名,局部参数名是用在方法体内的。引进这种方法的好处是继承Objective-C的优良特性,使代码段更像一个句子,更富有描述性。下面来看看如何使用这个类:
  var porsche = Vehicle(withWheels:4,andMaxPassengers:5)
  println(porsche.description())
  // This vehicle has 4 wheels,max passengers is 5
  另外在类的属性中,?代表optional,即该属性要么有值,要么没有值(nil)。

猜你喜欢

转载自www.cnblogs.com/zhaoyanchun/p/12783937.html