Lesson 2

作者: SheBang_ | 来源:发表于2015-12-27 23:53 被阅读20次

课程二最终完成了计算机的编写,下图是计算器的程序:


屏幕快照 2015-12-27 22.56.46.png

首先看下按下enter键做了什么,构造了这么一个无参数的函数,函数体内,首先设定using为false,然后将displayValue存进数组中,也就是说当我们按下enter键的时候,屏幕上的数字就被存进了数组中,然后using设定成false,下次我们再点击别的数字的时候,就会进入appendDigit的else中,屏幕上就会出现新按下的数字取代刚才的数字。

@IBAction func enter() {
       using = false
       oprandStack.append(displayValue)
       print("oprandStack = \(oprandStack)")
   }

新增了运算符号(加减乘除)程序如下图,拖拽控件到ViewController中,构造一个opetate的函数(我擦,我拼写错了。。。。)。什么情况下using的值是true?当用户点击数字且没有按下enter键的时候。那么下图中的

if using {
            enter()
        }

的含义就是,当用户还在输入的时候,我们按下了运算符号,这时候,我们将用户刚才输入的值,压入栈中。
然后我们用了一个switch来判断运算符号,进行相应的流程控制。举个例子,当是乘号的时候,displayValue被赋值最后两个被压入栈中的数字相乘,然后再enter将乘积压入栈中。


屏幕快照 2015-12-27 21.53.28.png

但是这么写,代码太冗余了,dirty。我们创建一个函数preformOperate,它的参数呢是另外一个函数(这个函数的如参是两个Double类型的参数,返回一个Double的参数),我们把乘法的函数单独剥离出来了,不然写在preformOperate中(我擦,我又拼错了。。。。),又是更刚才一样四种运算就要写四种,有很多段冗余的代码。


屏幕快照 2015-12-27 22.09.57.png

1.Swift中可以隐式的将一个方法作为另一个方法的参数,所以可以这样简化,形成闭包,但是要用花括号将函数包裹住,函数体部分要用in跟前面的参数分开:


屏幕快照 2015-12-27 22.39.52.png

2.swift中可以根据上下文进行判断,参数的类型,所以我们可以省去op1等的参数声明,包括返回值的类型,return也可以省掉。


屏幕快照 2015-12-27 22.45.24.png

3.Swift中编译器会自动给方法中的参数传一个默认值,第一个参数$0,第二个参数$1,不需要声明参数名字,参数名字也可以省略。


屏幕快照 2015-12-27 22.47.52.png

4.Swift中如果一个方法是另外一个方法的最后一个参数,那么可以将此方法放到原方法后面:


屏幕快照 2015-12-27 22.49.15.png

5.方法中没有别的参数,那么连这个“()”都可以省略了:


屏幕快照 2015-12-27 22.49.41.png

最终就形成了最开始的那个简洁的代码。

关于闭包,详见http://www.jianshu.com/p/a7d6e2a3a1b3,没有学完呢,后面补上。

相关文章

  • ES6零基础教学 解析彩票项目 源码

    lesson1 lesson2 lesson3 lesson4 lesson5 lesson6 lesson7 l...

  • Lesson 2

    学习内容: 课本 P9Lesson2, 学习句子拆分,将句子分成独立的单词 复习要求: 1.在家与孩子一起分别念学...

  • Lesson 2

    SCRIPT The first thing I do when I get to work each morni...

  • lesson 2~

  • Lesson 2

    课程二最终完成了计算机的编写,下图是计算器的程序: 首先看下按下enter键做了什么,构造了这么一个无参数的函数,...

  • Lesson 2

    Breakfast or lunch? 早餐还是午餐? 参考译文: 那是个星期天,而在星期天我是从来不早起的,有时...

  • Lesson 2

    每天5至10分钟,陪宝宝玩英语,在游戏中轻松学会说英语。 简要:捡起什么东西,放下什么东西。 pick up th...

  • LESSON 2

    90年代的美国,许多富豪在25年之后变得一无所有,甚至自杀;穷人中彩票之后暴富,继而又成为穷人;年薪百万的运动员在...

  • win_c/c++ mess03--mfc(sunxin)

    1. lesson01 2. lesson04 3. lesson05 4. lesson06 5. lesson...

  • Unit 2 Lesson 2

    课程内容: 学习Unit 2 Chant: “Pancake Time!” 学习Unit 2 Graded rea...

网友评论

      本文标题:Lesson 2

      本文链接:https://www.haomeiwen.com/subject/hvmbhttx.html