zoukankan      html  css  js  c++  java
  • 李洪强iOS开发Swift篇—10_方法

    李洪强iOS开发Swift篇—10_方法

    一、简单说明

    跟其他面向对象语言一样,Swift中的方法可以分为2大类:

    (1)实例方法(Instance Methods)

      在OC中,实例方法以减号(-)开头

    (2)类型方法(Type Methods)

      在OC中,类型方法以加号(+)开头

    二、实例方法

    1.什么是实例方法?

    实例方法:就是只能用对象实例调用的方法,也可以称为“对象方法”

    实例方法的语法跟函数基本一样

    2.代码示例:

    复制代码
    1 class Dog {
    2     func run() {
    3         println("Dog--->run")
    4     }
    5 }
    6 var d = Dog()
    7 d.run()
    复制代码

    说明:

    第2行定义了一个run方法

    第7行调用run方法:调用方法也跟调用函数很像,格式是“对象名.方法名(参数)”

    三、方法的参数

    (1)方法和函数的参数有点区别,默认情况下

    方法的第1个参数名仅仅是局部参数名

    方法的其他参数名(除第1个参数名以外)既是局部参数名,又是外部参数名

    复制代码
    1 class Calculator {
    2     func sum(num1: Int, num2: Int) -> Int {
    3         return num1 + num2
    4     }
    5 }
    6 var c = Calculator()
    7 c.sum(10, num2: 20)
    复制代码

    说明:

    num1仅仅是局部参数名,num2既是局部参数名,又是外部参数名

    相当于func sum(num1: Int, #num2: Int) -> Int

    (2)可以在参数名前面加个下划线 _,去掉默认的外部参数名

    复制代码
    1 class Calculator {
    2     func sum(num1: Int, _ num2: Int) -> Int {
    3         return num1 + num2
    4     }
    5 }
    6 var c = Calculator()
    7 c.sum(10, 20)
    复制代码

    说明:num1、num2都仅仅是局部参数名,不是外部参数名

    (3)也可以给第1个参数增加外部参数名

    复制代码
    1 class Calculator {
    2     func sum(#num1: Int, num2: Int) -> Int {
    3         return num1 + num2
    4     }
    5 }
    6 var c = Calculator()
    7 c.sum(num1: 10, num2: 20)
    复制代码

    说明:num1、num2既是局部参数名,又是外部参数名

    四、类型方法

    1.什么是类型方法?

      被关键字class修饰的方法,也可以称为“类方法”

    1 class Calculator {
    2     class func sum(num1: Int, num2: Int) -> Int {
    3         return num1 + num2
    4     }
    5 }
    6 Calculator.sum(10, num2: 20)

    说明:

    第2行定义了一个类型方法

    类型方法的特点:直接用类调用类型方法,不能用对象调用类型方法

    第6行调用类型方法,格式是“类名.方法名(参数)”

    注意:类型方法和实例方法的方法名可以一样

    复制代码
     1 class Calculator {
     2     class func sum(num1: Int, num2: Int) -> Int {
     3         return num1 + num2
     4     }
     5     func sum(num1: Int, num2: Int) -> Int {
     6         return num1 + num2
     7     }
     8 }
     9 Calculator.sum(10, num2: 20)
    10 var c = Calculator()
    11 c.sum(10, num2: 20)
    复制代码

    说明:

    第2行定义的类型方法和第5行定义的实例方法:方法名一样

    第9行使用类调用类型方法

    第11行使用对象调用实例方法

    五、self

    1.简单说明

    在每个方法内部,都有个隐含的属性self,它的作用跟Objective-C中self的用法基本一致

    self代表的是什么?谁调用这个方法,self就代表谁

    (1)在实例方法中:self代表调用方法的某个对象

    (2)在类型方法中:self代表调用方法的某个类

    2.代码示例

    复制代码
     1 class Person {
     2     class func run() {
     3         println("class func run")
     4     }
     5     func run() {
     6         println("func run")
     7     }
     8     class func test() {
     9         self.run();
    10     }
    11     func test() {
    12         self.run();
    13     }
    14 }
    15 var p = Person()
    16 p.test()
    17 Person.test()
    复制代码

    程序的输出结果是:

    func run

    class func run

  • 相关阅读:
    php 爬虫采集
    深入浅出Java 23种设计模式,最全PDF版本终于开放下载了!!(文末有福利)
    【Nginx】如何格式化日志并推送到远程服务器?看完原来很简单!!
    【Nginx】如何为已安装的Nginx动态添加模块?看完我懂了!!
    【Nginx】如何配置Nginx日志?这是最全面的一篇了!!
    【Nginx】如何按日期分割Nginx日志?看这一篇就够了!!
    【Nginx】如何封禁IP和IP段?看完这篇我会了!!
    【Nginx】面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!
    【Nginx】实现负载均衡、限流、缓存、黑白名单和灰度发布,这是最全的一篇了!
    【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5740119.html
Copyright © 2011-2022 走看看