Swift开篇009->方法

原创 2016年06月01日 16:17:15

PART_A 实例方法

  1. 简介

    • 实例方法:可属于某个特定类、结构体或枚举实例的方法

    • 实例方法能隐式访问它所属类型的所有其他实例方法和属性

    • 实例方法只能被它所属的类的某个特定实例调用

    • 调用方式:对象.实例方法

  2. 方法的局部参数名称和外部参数名称、及修改

    • 默认第一个为局部参数名称,后续为局部和外部参数名称

    • 可为第一个添加显式的外部名称,为后续添加外部名称 _,覆盖默认行为

      // 定义方法
      func add(a: Int, b: Int) { ... }
      
      // 方法调用
      .add(3, b: 8)
      // 定义方法
      func add(numPre a: Int, _ b: Int) { ... }
      
      // 方法调用
      .add(numPre: 3, 8)
  3. self 属性

    • 适用场景:实例方法的某个参数名称与实例的某个属性名称相同时(参考 Java)
  4. 在实例方法中修改值类型

    • 需在特定的方法中修改结构体或枚举的属性,可为该方法选择可变(mutating)行为. 当该方法做出改变后结果会写回到原始结构中

      struct Point {
          var x = 0.0, y = 0.0
          mutating func moveByX(deltaX: Double, y deltaY: Double) {
              x += deltaX
              y += deltaY
          }
      }
      var somePoint = Point(x: 1.0, y: 1.0)
      somePoint.moveByX(2.0, y: 3.0)
      print("The point is now at (\(somePoint.x), \(somePoint.y))")
      // (3.0, 4.0)
  5. 在可变方法中给 self 赋值

    1. 上面可简写

      struct Point {
          var x = 0.0, y = 0.0
          mutating func moveByX(deltaX: Double, y deltaY: Double) {
              self = Point(x: x + deltaX, y: y + deltaY)
          }
      }
    2. 枚举的可变方法可将 self 设置为同一枚举类型中的不同成员

      enum TriStateSwitch {
          case Off, Low, High
          mutating func next() {
              switch self {
              case Off:
                  self = Low
              case Low:
                  self = High
              case High:
                  self = Off
              }
          }
      }
      var ovenLight = TriStateSwitch.Low
      ovenLight.next()
      // ovenLight 值为 High
      ovenLight.next()
      // ovenLight 值为 Off

PART_B 类型方法

  1. 类型方法:可属于类、结构体或枚举类型的方法

  2. 定义方式:static

  3. 调用方式:类名.方法名类名.属性名

    class SomeClass {
        // 类型属性
        static var someProperty
    
        // 类型方法
        static func someTypeMethod() {
            // Method Body
        }
    }
    
    // 类型属性访问
    SomeClass.someProperty
    
    // 类型方法调用   
    SomeClass.someTypeMethod()

以上。 如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com

版权声明:本文为博主原创文章,如需转载请声明作者信息,谢谢。

Swift:实例方法和类型方法

大家对“实例方法和类型方法”的概念应该不陌生了,在objective-c中很常见。例如: 1. 实例方法(减号开头) - (instancetype)init;调用的时候,必须先进行实例化一个对象...
  • sinat_27706697
  • sinat_27706697
  • 2015年08月04日 21:32
  • 6146

Swift 方法(十)

方法 1.实例方法 (Instance Methods) 实例方法是属于某个特定类、结构体或者枚举类型实例的方法,提供访问和修改实例属性的方法或提供与实例目的相关的功能,语法与函数一致 ...
  • huangchentao
  • huangchentao
  • 2014年06月20日 16:29
  • 5393

Swift3.0 类方法示例

// // JFTools.swift // test_swift_class_method // // Created by cdd on 17/3/14. // Copyright © 2...
  • jeffasd
  • jeffasd
  • 2017年03月14日 15:31
  • 2330

Swift开篇004->集合

PART_O 集合简介 集合长度默认可变,若分配成常量,则其大小和内容皆不可变 Swift集合类型(必须通过泛型明确存储值)Arrays:数组,有序可重复 Sets:集合,无序不重复 Diction...
  • itCatface
  • itCatface
  • 2016年05月25日 10:47
  • 328

Swift静态方法

与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使...
  • tonny_guan
  • tonny_guan
  • 2014年08月31日 20:40
  • 19597

Swift开篇008->属性

PART_A 属性简介 存储属性:存储常量或变量,作为实例的一部分. 只能作用于类和结构体 计算属性:计算一个值. 可用于类、结构体、枚举 类型属性:上述两属性通常与特定类型的实例关联. 该属性可...
  • itCatface
  • itCatface
  • 2016年06月01日 11:04
  • 147

Swift开篇010->下标

1. **简介** - **下标可定义在类、结构体、枚举中,是访问集合、列表、序列元素的快捷方式** 2. **语法格式** - **下标了设定为读写或只读** ``` //...
  • itCatface
  • itCatface
  • 2016年06月01日 17:08
  • 131

Swift 对象方法

Swift 类的方法也分对象方法和类方法,我们先简单看一下对象方法。 我们分三类来分析 我们看一个例子,创建一个学生类 Student,他有四个属性 姓名 name,年龄 age,性别 sex,知识 ...
  • lwjok2007
  • lwjok2007
  • 2015年08月27日 10:18
  • 1251

Android系统-开篇

一、Android概述Android系统非常庞大,底层是采用Linux作为基底,上层采用带有虚拟机的Java层,通过通过JNI技术,将上下打通,融为一体。下图是Google提供的一张经典的4层架构图,...
  • Gityuan
  • Gityuan
  • 2016年03月06日 21:07
  • 1474

Swift开篇006->枚举

枚举简介 定义:一组相关的值定义了一个共同的枚举类型 语法格式enum Direction { case East case South case West case...
  • itCatface
  • itCatface
  • 2016年05月31日 09:09
  • 143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift开篇009->方法
举报原因:
原因补充:

(最多只允许输入30个字)