码迷,mamicode.com
首页 > 其他好文 > 详细

实例方法

时间:2015-03-19 18:42:42      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:实例方法

一、使用规范的命名

        swift的方法是在枚举、结构体或类中定义的函数,因此我们之前介绍的函数基本知识适用于方法,方法是具有面向对象的特点,方法是是具有面向对象的特点,与属性类似,方法可以分为:实例方法和静态方法;


        实例方法与实例属性相似,都隶属于枚举、结构体或类的个体,即实例,通过实例化这些类型,创建实例,使用实例调用的方法

            class Account {
                var amount:Double = 1000.0
                var owner:String = " "
                func interestWithRate(rate:Double)->Double{
                                        return rate * amount
                    }
}
            var myaccount = Account()
             println(myaccount.interestWithRate(0.88))

            在Swift中,方法和函数主要区别如下:

    (1)、方法的调用前面要有主体,而函数不需要;

     (2)、方法是在枚举、结构体或类内部定义的;

      (3)、方法命名规范与函数不同;


1、Swift和Object-C语言的规范


        目前苹果为IOS和MAC OS X应用开发的提供的开发语言为swift和object-c,


2、SmallTalk 语法风格的多重参数


        Object-C中的方法命名遵循了SmallTalk 语法风格,它将一个方法名分成几个部分,成为多重参数,假设定义一个按照索引插入对象到集合里的一个方法,


        (1)方法名中使用介词:swift方法的名称通常用一个介词(with,for,by)指向方法中的第一个参数;

      (2)使用外部参数名。从第二个参数后,可以指定外部参数名

      (3)省略外部参数名。如果没有指定外部参数名,会将本地参数名作为外部参数名,在函数中要在本地的参数名前加"#",而方法不需要


3、示例


  class Employee{
            var no:Int = 0
            var name:String = ""
            var job:String?
            var salary:Double = 0
            var depet:Department?
    
}
    class Department{
            var no:Int = 0
            var name:String = ""
            var Employees:[Employee] = [Employee]()
            
            func insertWithObject(anObject:AnyObject,atIndex index:Int)->(){
                    let emp = anObject as Employee//将类型AnyObject强制转化为Employee类型
                    employees.insert(emp,atIndex:index)                    
}
}
        var dept = Department()
        
        var emp1 = Employee()
        dept.insertWithObject(emp1,atIndex:0)
        
        var emp2 = Employee()
        dept.insertWithObject(emp2,atIndex:0)
        
        var emp3 = Employee()
        dept.insertWithObject(emp3atIndex:0)
        
        println(dept.employees.count)

            

        



二、结构体和枚举方法变异


        结构体和枚举中的方法默认情况下是不能修改属性的,将之前的Department修改为结构体,代码如下:


        

 struct Department{
            var no:Int = 0
            var name:String = ""
            var Employees:[Employee] = [Employee]()
            
            func insertWithObject(anObject:AnyObject,atIndex index:Int)->(){
                    let emp = anObject as Employee//将类型AnyObject强制转化为Employee类型
                    employees.insert(emp,atIndex:index)  //编译错误                  
}
}

        如果要修改,需要将方法声明为变异的(mutating),修改方法声明如下:

mutating func insertWithObject(anObject:AnyObject,atIndex index:Int)->()

        

本文出自 “平凡之路” 博客,请务必保留此出处http://linjohn.blog.51cto.com/1026193/1622276

实例方法

标签:实例方法

原文地址:http://linjohn.blog.51cto.com/1026193/1622276

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!