一、方法

  在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

Swift学习(二)的更多相关文章

  1. Swift学习二

    // 定义枚举方式一 enum Season { // 每个case定义一个实例 case Spring case Summer case Fall case Winter } // 定义枚举方式二 ...

  2. swift学习二:基本的语法

    声明本文转载自:http://www.cocoachina.com/applenews/devnews/2014/0603/8653.html Swift是什么? Swift是苹果于WWDC 2014 ...

  3. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  4. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  5. Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  6. 今天开始Swift学习

    今天开始Swift学习  在此记录笔记  以备之后查阅! allenhuang

  7. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  8. 12套swift学习资源分享

    虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...

  9. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  10. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

随机推荐

  1. IDrac的console无法键盘输入

    IDrac的console无法键盘输入问题? 解:disable IE 的protect 功能 (Idrac的正常工作需要先安装Java,同时IDrac只支持IE和Firefox.) 方法: IE-& ...

  2. C语言每日一题之No.7

    今天是正式第一天在现有的世界里与自己相处,你再也没有另一个世界可以躲避了.终于要自己面对自己了,一个人要真实的面对自己的灵魂总是痛苦的.从学校到社会的环境转换,现实与理想的冲突,个人价值观和社会价值观 ...

  3. oracle学习笔记(四)oracle内存优化

    emca -config dbcontrol db -repos recreate 解决'oracle Environment variable ORACLE_SID not defined. Ple ...

  4. 23. Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. = ...

  5. 访问修饰符protected

    protected(C# 参考) protected 关键字是一个成员访问修饰符. 受保护成员在其所在的类中可由派生类实例访问. 示例只有在通过派生类访问时,基类的受保护成员在派生类中才是可访问的. ...

  6. Filter 过滤器

    1. config in web.xml 2. @Component 3. @WebFilter (filterName="LoginFilter", url-patterns= ...

  7. Report_客制化Excel报表中的XLS标记(案例)

    2014-06-06 Created By BaoXinjian

  8. py继续

    这个正则里面有引号,我外面在一个引号就出问题了,应该怎么处理 用双引号

  9. php pcntl 多进程学习

    1.捕获子进程退出(监听SIGCHLD信号,然后调用 pcntl_wait 函数) declare(ticks=1); pcntl_signal(SIGCHLD, "sig_handler& ...

  10. centos nginx环境下删除CI框架Index.php入口遇到404问题

    今天在网上百度看了很多文章,想要去掉index.php入口文件有好多方法,自己也照着在网站到根目录下新建了一个.htaccess文件,内容如下: RewriteEngine On RewriteCon ...