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

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

相关文章推荐

深入浅出设计模式-009:模板方法模式(Template Method Pattern)

模板方法模式

emWin 2天速成实例教程009_ListView列表框控件使用方法

emWin的ListView控件是一个非常实用的列表框控件,当你要展现一些列表信息但没有此控件可用时,是非常抓狂的事情。emWin的ListView已经做的非常完善,比如可随意拖拉改变列宽度、滚动轴自...
  • neqee
  • neqee
  • 2016-11-29 14:43
  • 1847

Canvas开篇之drawBitmap方法讲解

尊重原创,欢迎转载,转载请注明: FROM  GA_studio   http://blog.csdn.net/tianjian4592    前面讲了paint,后面会花几...

音视频之路之开篇——视音频编解码技术零基础学习方法

注:   本文章转自雷大神的博客http://blog.csdn.net/leixiaohua1020/article/details/18893769,本人认为这是一篇音视频领域入门的佳作,强烈推荐...

Canvas开篇之drawBitmap方法讲解

好文章,要转载! 前面讲了paint,后面会花几篇主要讲讲canvas,并且由于最近项目比较紧,所以近期的文章都会“短小精悍”; paint 作为画笔,里面有非常多而强大的设置方法,比如设置颜色过滤...

Canvas开篇之drawBitmap方法讲解

前面讲了paint,后面会花几篇主要讲讲canvas,并且由于最近项目比较紧,所以近期的文章都会“短小精悍”; paint 作为画笔,里面有非常多而强大的设置方法,比如设置颜色过滤器,设置位图渲染、渐...

Swift - 实现日志输出的封装1(显示出调用的文件名、方法、行号)

在开发调试程序时,我们少不了使用 print 方法进行日志打印。当然简单地调试使用 print 方法就够了,但如果日志输出的地方很多,就不好区分出每条日志具体是在哪里打印的。 本文对日志打印功能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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