实例方法

一、使用规范的命名

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)->()
时间: 2024-10-20 20:29:13

实例方法的相关文章

python 静态方法、实例方法、类方法

实例方法: class A: data = 0 def printd(self): print(self.data) type(A) #out:type A.__dict__ #out: a = A() #out:{} 类方法:@classmethod class A: data = 0 def printd(self): print(self.data) def getdata(): A.data = 1 print(A.data) class A: data = 0 def printd(s

静态方法实例方法

js里面的实例方法和静态方法 转自:http://blog.csdn.net/oryjk/article/details/46901035 静态方法是可以直接用类名.方法名去调用的,而实例方法是不可以的,他必须要用实例才可以去调用, var Person=function(){}; Person.say=function(){ console.log('I am a Person,I can say.') }; Person.prototype.getName=function(name){ c

普通(实例)方法和实例方法的定义和调用

/** *普通方法和实例方法的定义和调用 */ class ClassName {     public $num = 1;        //实例属性     static $num2 = 2;        //静态属性     //实例方法     function showInfo()     {         echo "实例方法被调用!<br />";         echo "num的值{$this->num}<br>"

JBOSS 6和JBOSS 5搭建多实例方法

JBOSS 6搭建多个实例方法 方法一 1.复制原本服务器中原有的实例,例如JBOSS自带的standalone,若是在另一个服务器中搭建实例,也要复制JDK. 2.查看系统中是否设置JAVA_HOME和JBOSS_HOME两个变量,若有设置也要做相应的修改. 3.修改启动脚本 #!/bin/bash echo =============================== NAME=umc-web ID=`ps -ef | grep "$NAME" | grep -v "$

Objective-C-类(static)方法、实例方法、overwrite(覆写)、属性(property)复习

先来定义一个Human父类 定义部分: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // //  Human.h //  OOP // //  Created by jimmy.yang on 11-2-9. //  Copyright 2011 __MyCompanyName__. All rights reserved. // #import <Foundation/Foundation.h> @interface Human :

java中类方法和实例方法

1.方法声明时,方法的类型前面不加关键字static的是实例方法,加static的是类方法即静态方法. 2.实例方法既可以对类变量操作也可以对实例变量进行操作,而类方法(static  method)只能够对类变量(static  varival)操作. 3.一个类中的方法可以互相调用,实例方法可以调用该类的其他方法,而类方法只能调用该类的类方法,不能调用实例方法. 4.类方法不能够被重写,但可以在子类重新定义他们.

swift中实例方法和类方法的书写格式

其实swift中的实例方法和类方法的区分很简单,喜欢看源代码的,肯定一眼就看懂了.类方法的定义就是在实例方法前面加一个class修饰即可.还是附上一篇实例代码吧. ViewController.swift中 // // ViewController.swift // 类方法和实例方法的定义 // // Created by mac on 16/2/6. // Copyright © 2016年 ZY. All rights reserved. // import UIKit class View

Thread中的实例方法

http://www.cnblogs.com/xrq730/p/4851233.html Thread类中的方法调用方式: 学习Thread类中的方法是学习多线程的第一步.在学习多线程之前特别提出一点,调用Thread中的方法的时候,在线程类中,有两种方式,一定要理解这两种方式的区别: 1.this.XXX() 这种调用方式表示的线程是线程实例本身 2.Thread.currentThread.XXX()或Thread.XXX() 上面两种写法是一样的意思.这种调用方式表示的线程是正在执行Thr

类方法和实例方法区别

1.类方法和实例方法 类方法:不需要声明一个对象(实例),就可以直接引用.通常是有返回值的(否则类方法就无意义了,因为没有对象或者相应的成员变量的值可以设置) 类方法的特点: 1.声明和实现的时候,以(+)开头 2.类方法属于类的本身,只能通过类名调用 3.类方法不能直接访问成员变量 4.类方法不能直接调用对象方法(可以间接调用)    // 间接调用:1> 把对象当做形参传入    2> 在类方法中创建一个对象 例如:+ (instancetype)personWithName:(char

UIView 实例方法 Instance Methods(转)

好了,我接着上篇,开始我们的对UIView 实例方法的探索 UIView 实例方法 Instance Methods 初始化一个视图 - (id)initWithFrame:(CGRect)aRect //用指定的frame 初始化一个视图对象 结束视图中的编辑状态 - (BOOL)endEditing:(BOOL)force //这个在弹回键盘时特别有用 关于响应 - (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecogn