看了斯坦福老头的课,真心觉得,我的中文怎么也变的这么垃圾了。是关于iOS8的课程,用swift写的,一个计算器应用的制作,看看人家的课,再看看咱们学校的课(不过垃圾学校,纯粹觉得大学浪费了),废话啊,废话,继续废话。那个老头的代码有些我给省略了,不知道会出现什么问题,反正我是没有发现,如果你发现了,请告诉我。还有就是这个计算器的具体操作步骤是,你先4-> 回车-> 5-> 回车 ->乘号 显示计算结果20

首先是界面的搭建,就是0-9一共10个按钮,然后加减乘除四个操作按键,以及,一个回车键(用来将所输入的数存放在栈中,反正老头是这样说的,他把输入进去的数存放到了一个数组中了var operandStack = Array<Double>(),还有就是一个用来显示输入的数以及输入结果的label了。这些都是在故事板中进行的(当然除了那个数组),然后将label与代码关联

@IBOutlet weak var resultLabel: UILabel!

//事实上,在这里指明类型被认为是不好的书写方式,如果可以推断出类型 ,你就应该让编译器自己去推断

//var isStart :Bool = false

var isStart = false //用户是不是已经输入,那个老外用了一长串的字符userIsInTheMiddleOfTypingANumber

将0-9这10个数的点击事件与代码关联

@IBAction func buttonTap(sender: UIButton) {

let digit = sender.titleLabel?.text// 注意这个digit是一个可选值(opentional),就是你点击的按钮上的数字,

if isStart{

resultLabel.text = resultLabel.text! + digit! //可选值是不可以拼接字符串的,所以在这个地方,需要进行解包

}else{

resultLabel.text = digit//用户第一次点(我这样理解的),结果框显示你按的那个数

isStart = true//这个是说用户已经开始输入了

}

}

var operandStack = Array<Double>()

//这个变量是一个内部的栈,去存储你输入的这些数,他的类型是一个数组,这个数组里存放的是Double的变量,注意在这个地方要初始化,(我们不能使用没有经过初始化的,会报错)

@IBAction func enter() {

isStart = false //因为我们在点完enter的时候,需要将刚才输入的数放到栈里,并且输第二个数,所以需要将这个布尔值设为false

//        var value = (resultLabel.text! as NSString).doubleValue

operandStack.append(resultValue)

println("operandStack: \(operandStack)")

}

//计算型属性

var resultValue:Double{

get{

return NSNumberFormatter().numberFromString(resultLabel.text!)!.doubleValue

}

set{

resultLabel.text = "\(newValue)" //newValue是系统的,就是想要设置的那个值       2将double类型转换为字符串

//            isStart = false// 这句话写在这不知道是什么意思,该怎么理解呢

}

}

@IBAction func operate(sender: UIButton) {

let operation = sender.currentTitle!

switch operation{

//            case "✖️" : performOperation { $1 * $2 }

case "✖️": performOperation { $0 * $1} //这个地方,这地方真心坑,$0 * $1,我还以为传进入随便两个数就行了呢,那老头对这段代码不断的简化简化,才写成了这样,明天把简化的过程单独整理出来(明日复明日啊)

case "➗" : performOperation { $1 / $0 }

case "➖" : performOperation { $1 - $0 }

case "➕" : performOperation { $1 + $0 }

default:break

}

}

func performOperation(operation:(Double,Double)->Double){//函数的参数是一个函数

if operandStack.count >= 2{

resultValue = operation(operandStack.removeLast() , operandStack.removeLast())//operandStack.removeLast()难道说,这个方法删除并返回了最后一个数?

}

}

//    func multipy(op1:Double,op2:Double)->Double{

//

//        return op1 * op2

//    }

swift-计算器(斯坦福公开课)的更多相关文章

  1. Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课

    Swift项目开发实战-基于分层架构的多版本iPhone计算器-直播公开课 本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版i ...

  2. 斯坦福公开课:Developing IOS 8 App with Swift(1-3)心得体会

    最近开始学习Swift开发移动程序.跟随斯坦福大学的公开课进行自学. 这真是一个美好的时代,虽然不能在斯坦福求学,但是可以观看录制的授课录像.讲义,好似老师在给我们上课一样! 心得: 1.每节课信息量 ...

  3. 关于ios8斯坦福公开课第二课

    在这个课程中,我们遇到了这样的代码 @IBAction func oprate(sender: UIButton) { let opration = sender.currentTitle! if u ...

  4. 斯坦福公开课:Statistical Learning中做错的选择题

    4.4 R1 In which of the following problems is Case/Control Sampling LEAST likely to make a positive i ...

  5. iOS菜鸟成长笔记(3)——斯坦福公开课学习(1)

    一.iOS四层结构 1.Core OS 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包含或者说是提供了整个iPhone OS的一些基础功能, ...

  6. 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述

    首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发. 首先我们要知道IOS系统中的结构情况,从贴近硬件的底层到贴近用户 ...

  7. 斯坦福大学 iOS 开发公开课总结

     斯坦福大学 iOS 开发公开课总结   前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 "iPhone 开发公开课 " 了.此公开课在以前叫做<iPho ...

  8. 斯坦福大学Andrew Ng教授主讲的《机器学习》公开课观后感[转]

    近日,在网易公开课视频网站上看完了<机器学习>课程视频,现做个学后感,也叫观后感吧. 学习时间 从2013年7月26日星期五开始,在网易公开课视频网站上,观看由斯坦福大学Andrew Ng ...

  9. 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程

    引用: 智捷课堂携手51CTO学院.图灵教育联合举办iOS线上培训就业班系列体验公开课. 分享移动开发.移动设计方向最新,最热,最抢眼技术热点以及设计经验.我们每周将最少举办一次公开课,同时会提前安排 ...

随机推荐

  1. STL学习系列二:Vector容器

    1.Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添 ...

  2. [iOS基础控件 - 3.4] 汤姆猫

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  3. Objective-C中的Block

    1.相关概念 在这篇笔记开始之前,我们需要对以下概念有所了解. 1.1 操作系统中的栈和堆 注:这里所说的堆和栈与数据结构中的堆和栈不是一回事. 我们先来看看一个由C/C++/OBJC编译的程序占用内 ...

  4. 转载Jquery中的三种$()

    1.$()可以是$(expresion),即css选择器.Xpath或html元素,也就是通过上述表达式来匹配目标元素. 比如:$("a")构造的这个对象,是用CSS选择器构建了一 ...

  5. sizeof _countof _tcslen的比较

    sizeof ----用于计算数组或其他对象的大小,以字节为单位,含\0结束符. _countof----一个宏,用于计算数组的实际元素个数 ,含\0结束符: _tcslen----c++求数组长度的 ...

  6. 【STL学习】智能指针之shared_ptr

    前面已经学习过auto_ptr,这里补充另外一种智能指针,比auto_ptr要更强力更通用的shared_ptr. shared_ptr 简介及使用选择  几乎所有的程序都需要某种形式的引用计数智能指 ...

  7. vs2005升级到vs2010相关问题

    1.项目编译失败,报 Resgen.exe 退出 ,错误代码2 处理方式: http://jingyan.baidu.com/article/90895e0fe80c6064ed6b0b6b.html ...

  8. 成员方法与const之间的关系

    const可以放在成员方法的三个地方,前.中.后. 首先考虑在中间: 1.const修饰形参,表示形参是否为const 2.如果const修饰引用(指针指向的对象),可以进行过载,如果不是修饰引用(指 ...

  9. [AngularJS] Introduction to angular-formly

    <!DOCTYPE html> <html> <head> <!-- Each of these scripts are the latest version ...

  10. 如何获取SQL Server数据库元数据的方法

    发布时间:2007.06.15 05:05    来源:赛迪网    作者:3946469 元数据简介 元数据 (metadata) 最常见的定义为“有关数据的结构数据”,或者再简单一点就是“关于数据 ...