博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift学习(二)
阅读量:5366 次
发布时间:2019-06-15

本文共 2044 字,大约阅读时间需要 6 分钟。

一、方法

  在OC中,函数是C语言的形式,跟方法不一样

  函数:int sum (int num1, int num2) {

       return num1 + num2;

       }

  方法:- (int)sum:(int)num1 num2:(int)num2 {

       return nim1 + num2;

     }

 

  Swift中函数和方法相同。

  方法的第一个参数仅仅是局部参数名,只在函数内部使用;除第一个之外的其他参数名既是局部参数名,又是外部参数名。

  func sum (num1: Int, num2: Int) -> Int {

    return num1 + num2

  }

 

  Swift中方法的调用:

  class Calculator {

    func sum(num1: Int, num2: Int) -> Int {

      return num1 + num2

    }

  }

  var calculator = Calculator()

  calculator.sum(10, num2: 20)   // 会默认生成一个num2 外部参数名

  

  class Calculator {

    func sum(num1: Int, _ num2: Int) -> Int {  // 加个下划线,去掉默认外部参数名,num1和num2都仅仅是局部参数名

      return num1 + num2

    }

  }

  var calculator = Calculator()

  calculator.sum(10, 20)   // num2 前加下划线之后调用就不用写num2了

  

  class Calculator {

    func sum(num1: Int, cal_num2 num2: Int) -> Int {  // num2的外部参数名变为cal_num2,如果前边再加一个下划线,同上

      return num1 + num2

    }

  }

  var calculator = Calculator()

  calculator.sum(10, cal_num2: 20)   // 会默认有个num2参数

  注意:也可以给第一个参数增加外部参数名。如果num1前面加#: #num1 或者: cal_num1 num1,调用的时候第一个参数就需要写上参数名,num1 或者 cal_num1

 

 

  类型方法:被关键字class修饰的,用类名来调。内部没有对象,不能存在属性,类方法不需要创建对象直接调用,省内存。

  注意,类型方法的名称可以和实例方法的名称一样,一个用类名调用,一个用对象调用,没有冲突。

  class Calculator {

    var price: Double = 10.0

    class func sum(num1: Int, num2: Int) -> Int {  

      price = 20.0  // 这句报错,price是存储属性,是对象才有的,类方法中没有对象

      return num1 + num2

    }

  }

  var caculator = Calculator.sum(10, num2: 20)

  

 

  什么是self:

  每一个方法内部,都有一个隐含的属性self,作用跟OC中的用法一致。

  self代表什么:

  谁调用这个方法,self就代表谁,在实例方法中:self代表调用方法的某个对象;在类方法中,self代表调用方法的某个类

 

  class Person {

    class func run() {

      println("class func run")

    }

    func run() {

      println("func run")

    }

    class func test() {

      self.run  // 也可以省略 run

    }

    func test() {

      self.run()

    }

  }

  var person = Person()

  person.test()   // 首先来到func test(), self代表调用者 person对象,person对象调用 func run()方法,打印 func run

  Person.test()   // 首先来到claa func test(), self代表调用者 Person类,Person类调用 class func run()方法,打印 class func run

转载于:https://www.cnblogs.com/10-19-92/p/5605298.html

你可能感兴趣的文章
Design Tic-Tac Toe
查看>>
SQL中的去重操作
查看>>
uva 12097 - Pie(二分,4级)
查看>>
mongodb索引
查看>>
nginx源码学习资源(不断更新)
查看>>
【bzoj2882】工艺 后缀自动机+STL-map
查看>>
[redis] redis
查看>>
Linux的加密认证功能以及openssl详解
查看>>
[Tools] 使用XP远程登录Win8系统
查看>>
【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
查看>>
HDU- 2265 Encoding The Diary
查看>>
socket基本概念
查看>>
[第三方]SCNetworkReachability 获取网络状态控件使用方法
查看>>
在Windows上使用putty连接一台Linux主机
查看>>
Socket常见错误
查看>>
百度地图2.0API和3.0API。你想要的百度地图的这都有
查看>>
专业词汇
查看>>
星期五的收获
查看>>
proxmox 去除订阅提示
查看>>
使用Html.EditorFor()为文本框加上maxlength,placeholder等属性
查看>>