一、方法

  在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. Learning Puppet — Manifests

    Begin In a text editor — vim, emacs, or nano — create a file with the following contents and filenam ...

  2. System.Data.SqlClient.SqlException.Number的所有错误值列表

    在系统数据库(master或msdb或model)的架构(sys)的视图(messages)中: SELECT [message_id]      ,[language_id]      ,[seve ...

  3. Perl参考函数

    这是标准的Perl解释器所支持的所有重要函数/功能的列表.在一个函数中找到它的详细信息. abs - 绝对值函数 accept - 接受传入的socket连接 alarm - 调度一个SIGALRM ...

  4. KMP算法的Next数组详解 转

    这个写的很好,还有讲kmp,值得一看. http://www.cnblogs.com/tangzhengyue/p/4315393.html 转载请注明来源,并包含相关链接. 网上有很多讲解KMP算法 ...

  5. CF478 B. Random Teams 组合数学 简单题

    n participants of the competition were split into m teams in some manner so that each team has at le ...

  6. CF 337D Book of Evil 树形DP 好题

    Paladin Manao caught the trail of the ancient Book of Evil in a swampy area. This area contains n se ...

  7. memcache 内部原理实现

    Lazy Expiration memcached 内部不会监视记录是否过期,而是在 get 时查看记录的时间戳,检查记录是否过期.这 种技术被称为 lazy(惰性)expiration.因此,mem ...

  8. JAVA 边界布局管理器

    //边界布局管理器 import java.awt.*; import javax.swing.*; public class Jiemian1 extends JFrame{ //定义组件 JBut ...

  9. linux ps命令(转载)

    来源:http://www.cnblogs.com/peida/archive/2012/12/19/2824418.html Linux中的ps命令是Process Status的缩写.ps命令用来 ...

  10. 怎么安装phpcms?PHPCMS V9安装图文教程

    Phpcms是国内领先的网站内容管理系统, 同时也是一个开源的PHP开发框架.PHPCMS V9目前已提供文章.图片.下载等内容模型,在此基础上可非常方便的扩展出信息.房产.交友.点评等功能.已有的模 ...