zoukankan      html  css  js  c++  java
  • Swift学习(二)

    一、方法

      在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

  • 相关阅读:
    javascript实现动态侧边栏
    javascript实现图片滚动
    C语言-----野指针
    守护进程daemon.c
    UDP网络程序设计
    TCP网络程序设计
    网络编程模型
    fork和vfork
    网络协议分析
    多线程同步
  • 原文地址:https://www.cnblogs.com/10-19-92/p/5605298.html
Copyright © 2011-2022 走看看