• Swift 了解(3)


     

    类(Classes)

     

      假设你是一个建筑师,你刚刚签了一个合同,要在一个新的小区修建20个相似的房子。在你派出建筑工队之前,你必须要画一个房子的设计图。这份设计图将会展现房子的外表和功能。把这份设计图当做模板,就能制作出20个房子各自的设计图了。
    使用设计图或者模板来建造物品能够节省时间,让后期维护工作更加简单。这个原则同样适用于创建虚拟对象。在Swift中起着设计图功能的叫做类(class)。类是一个对象(object)的设计图或模板,这个模板可以反复使用来创建虚拟对象。

     

    一个类定义了对象的属性和行为。
      属性就是对象具有的特征。属性(attributes)由properties定义,(properties也有属性的意思,所以我就用英文了,不知道该怎么翻译才不会有歧义啊),properties就是对象中的变量。一个房子的properties可能是外部颜色,街道号码,浴室的数量。
    行为就是对象提供的方法。例如,方法可能是,把空调温度调整到68华氏度,打开车库的门,凯琪报警系统。
    在Swift中创建你自己的类是非常简单的。如果你想为你的新房屋建设项目写一个类,它看起来会是这样:

    1 class House 
    2 {
    3 
    4   }

    类的名字的开头是大写英文字母,这样能让其他的开发者区分出这时一个类还是一个对象。对象和方法常常用一个小写字母开头。

    属性(Properties)

      给你自定义的类增加属性和声明一个变量非常相似。你可以给你的house class增加一些属性:

    1 class House 
    2 {
    3   var exteriorColor = "Brown"
    4   var currentAirTemp = 70
    5   var isGarageOpen = true
    6   var isAlarmEnabled = false 
    7 }

      你给类增加了4个属性,每个都设置了默认值。这意味着参数没有传入新值时,从这个类中建造的房子都会有一个褐色的外表,车库的门是开启的,报警系统是关闭的,空调设置的温度是70华氏度。

     

    方法(Methods)

     

    你也可以给你的类增加一些方法:

     

     1 class House 
     2 {
     3 
     4   var exteriorColor = "Brown"
     5   var currentAirTemp = 70
     6   var isGarageOpen = false
     7   var isAlarmEnabled = false
     8 
     9   func prepareForNighttime()
    10     {
    11       isGarageOpen = false
    12       isAlarmEnabled = true 
    13       currentAirTemp = 65
    14    }
    15 
    16   func prepareForDaytime()
    17     {
    18       isGarageOpen = true
    19       isAlarmEnabled = false 
    20       currentAirTemp = 70
    21     }
    22 
    23   }

    创建一个对象(Creating an Object)

      现在你已经为你的类(house class)定义了属性和方法,是时候来建造第一个房子了。为了从一个类中创建一个对象,你需要调用初始化方法(initializer method)。这个初始化方法是专门为了设置新对象而设计的。初始化方法有些像你第一次打开Mac时遇见的安装向导。

      如果你的参数有默认值,那么就没有必要写初始化方法了,Xcode会为你创建一个。初始化方法是这样写的,先写一个类的名字,然后跟上一对括号,例如:

    var myHouse: House = House()

    或者也可写成这样:

    var myHouse = House()

    不管那种方法都可以创建一个新的房子叫做myHouse

    获取属性(Accessing Properties)

    用点语法可以获取属性的值,点语法是可以取值或赋值的格式。点语法始于一个对象:

    1 var myHouse = House()

    为了获取exteriorColor,先写变量名字,后面跟一个点,然后是exteriorColor

    1 myHouse.exteriorColor
    2 //Brown
    exeriorColor返回是字符串"Brown",因为这个属性的默认值是"Brown"。

    这个简单的格式也可以用于给属性赋值,为了赋值,需要增加一个等号,然后写上新的值:

    myHouse.exteriorColor = "Blue"

    这样就把exeriorColor的值改成了"Blue":

    1 myHouse.exteriorColor = "Blue" 
    2  println(myHouse.exteriorColor)
    3 //"Blue"

    当代码把exeriorColor的值改成"Blue"后,接下来的一行打印出了房子的exeriorColor值。

    方法(Methods)

      方法(Methods)是为了完成一个具体目标而组织在一起的一系列步骤。方法(Methods)和函数(functions)这两个概念非常相似。方法(Methods)是在一个类或者一个对象中,为完成一个目标组合在一起的一组步骤,而函数(functions)是为完成一个目标组合在一起的一组步骤,是独立存在的。这两个概念非常相似,成了同义词。我会经常听到人们在使用这两个单词时常常互换使用,甚至是他们想说的是一个方法,却使用了function函数这个单词。
    能够编写自己的方法可以非常方便地代替一些重复的工作。如果你想写一个每天迎接造成的方法,会是这样子:

    1 func goodMorning ( ) 
    2 {
    3      println("Good Morning")
    4  }
    View Code

    首先用func作为方法的开头,func用来声明新方法的开头,接着就是方法的名字,使用驼峰命名法命名。例如:

    goodMorning( )
    

    带参数的方法,参数的名字和类型写在括号内,传入的参数的值也就是这些括号内的变量名的值。例如:

    1 func goodMorning(name: String)
    2 {
    3     println("Good Morning (name)")
    4 }
    5 //Good Morning NAME
    View Code

    先写参数名字,然后是冒号,冒号后面就是参数的类型,如果方法有多个参数,用逗号间隔每个参数:

    1 func goodMorning(name: String, day: String)
    2 {
    3     println("Good Morning (name), Happy (day)")
    4 }
    5  //Good Morning NAME-VARIABLE-HERE, happy DAY-VARIABLE-HERE

    调用(calling)方法是指,一行可以触发方法执行的代码。调用方法非常简单,写下方法的名字后跟一对括号。及时你的括号里并没有参数,这对括号也要写上。例如,这个名字为goodNight的方法:

    1 func goodNight () 
    2 {
    3     println("Good Night") 
    4 }

    调用这个方法的代码是这样的:

    1 goodNight()
    2 // "Good Night"

    如果你的方法有参数,但是调用的时候忘记提供参数了,你可以为这些参数设置默认值。如果在调用时没有提供参数,就会使用默认值作为执行时的变量值。是这样设置默认值的:首先在类型后面写一个等号,然后等号右边写上这个默认值。例如,下面的代码把nameday的默认值设置成“World”和“Day”:

    1 func goodMorning(name: String = "World", day: String = "Day") 
    2 {
    3      println("Good Morning (name), Happy (day)")
    4 }

    现在,调用时忘记提供参数值,方法中打印出的信息仍然是可读的:
    goodMoring()
     

    返回值(Return Values)

      除了能够接收输入值,执行一系列步骤,方法(Methods)还能做更多事情,还能产生输出值。当一个方法提供了一个输出值,这个输出值叫做返回值(return value)。返回值是方法的最终结果,返回给调用者。一个返回值可以是任何类型的,不过返回值的类型必须在方法中声明:

    func sum(a: Int,b: Int) -> Int
     {
         return a + b
     }
     

      如果一个方法有返回值,必须在参数后面定义一下。返回类型(return type)是被返回来的变量的类型。为了定义返回值的类型,首先要写一个dash(英文输入法下的破折号),然后一个大于号,看起来像一个箭头,表示这个方法有返回值,剪头的右面是返回值的类型。最后,return关键词还要出现在方法中,return后面是要返回的变量。

    不管方法中的代码有多少行,return表示这个方法结束了,编译器在编译方法中的代码时,遇到return就结束编译,return后面的代码就会被忽略掉:

    1 func calculateTip(bill: Float, percentage: Float)-> Float
    2  {
    3     var tip = bill * percentage
    4     return tip
    5  }
    6  

     资源:http://www.jianshu.com/p/d11225ef6bce

     

  • 相关阅读:
    Linux下semaphore的使用 进程间互斥的一个好方法
    CURL编程:什么是NonASCII平台,如何取得页面的charset
    C++中的重载(Overload), 覆盖(Override)和隐藏(Hide)
    system调用虽然用了exec,但是fd, signal这些还是会保留父进程的,be careful
    addr2line,可以根据一个地址打印出对应的代码行
    POSIX Threads Programming 阅读笔记(来自劳伦斯利物浦实验室的文章)
    [Gammu]setlocale和bindtextdomain函数的用法
    常用编码
    用PL/SQL画直方图
    窗体的关闭
  • 原文地址:https://www.cnblogs.com/EchoHG/p/7010136.html
Copyright © 2020-2023  润新知