swift-计算器(斯坦福公开课)

看了斯坦福老头的课,真心觉得,我的中文怎么也变的这么垃圾了。是关于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

//    }

时间: 2024-10-18 10:20:24

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

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

本课程采用Q Q群直播方式进行直播,价值99元视频课程免费直播.完整的基于Swift项目实战,手把手教你做一个Swift版iPhone计算器.(直播过程也有惊喜!)直播Q Q群:362298485(直播时点击群视频即可进入直播课堂)直播时间:8月26日(周二),9月2日(周四),每天20:00-22:00欢迎咨询客服Q Q:1575716557直播后希望继续深入学习了解本课程可在51CTO学院购买本课程,定价99元.购买课程更有惊喜:买课程送书,送优惠券了! 购买本课程赠送关东升老师价值69元国

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

最近开始学习Swift开发移动程序.跟随斯坦福大学的公开课进行自学. 这真是一个美好的时代,虽然不能在斯坦福求学,但是可以观看录制的授课录像.讲义,好似老师在给我们上课一样! 心得: 1.每节课信息量很大,每个词,每个操作都是有意而为之的.需要课后好好体会,针对课上讲的知识点多练习.多阅读才能有所体会并掌握要点. 2.英语不过关是短腿.这导致了要看字幕.老师的屏幕上输出的代码.老师鼠标操作.另外字幕中出现的不容易翻译的词语是直接输出的英文原文. 导致眼睛要上下左右到处看,很是狼狈.即便如此也经常

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

在这个课程中,我们遇到了这样的代码 @IBAction func oprate(sender: UIButton) { let opration = sender.currentTitle! if userIsOnInput { enter() } switch opration { case "+": performOperation{ $0+$1 } case "−": performOperation{ $1-$0 } case "×":

斯坦福公开课1:机器学习的动机与应用

什么是机器学习? 一个程序对于任务T,输入经验E,通过性能评测方法P衡量该程序在T的性能得到改进. 监督学习 Regression(举例:房屋价格与房屋面积的关系) Classification(举例 :根据年龄和肿瘤大小判断乳腺肿瘤是良性/恶性) 非监督学习 clustering(举例:鸡尾酒会问题) 强化学习 (举例:机器狗,好狗!坏狗!)

斯坦福公开课5:生成学习

北京理工大学计算机专业2016级硕士在读,方向:Machine Learning,NLP,DM 2017/3/21 9:08:46 本讲大纲: 1.生成学习算法(Generative learning algorithm) 2.高斯判别分析(GDA,Gaussian Discriminant Analysis) 3.朴素贝叶斯(Naive Bayes) 4.拉普拉斯平滑(Laplace smoothing) 生成学习 判别学习算法(discriminative learning algorith

【编译器】斯坦福公开课学习2

02-01 将会为教学用语言COOL编写编译器,把COOL编译成MIPS汇编语言.会分为五个部分讲解,首先是写一个COOL程序,程序本身会是一个解释器.之后是词法分析.语法分析.语义分析.代码生成.这些部分都是分离的.即在我们自己实现语法分析时,我们将自己完成的部分嵌入到一个参考编译器中.参考编译器中已经有其他的部分了.这便于对各个部分独立排除错误. 一些COOL代码示例,用于熟悉COOL语言. class Main{ main():Int {1}; }; class Main{ i : IO

斯坦福公开课4:牛顿方法

北京理工大学计算机专业2016级硕士在读,方向:Machine Learning,NLP,DM 本讲大纲: 1.牛顿方法(Newton's method) 2.指数族(Exponential family) 3.广义线性模型(Generalized linear models) 牛顿法 假设有函数:,我们希望找到满足的值. 这里是实数. 牛顿方法执行下面的更新: 具体原理可参考文章<Jacobian矩阵和Hessian矩阵> 下图为执行牛顿方法的过程:  简单的来说就是通过求当前点的导数得到下

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

4.4 R1 In which of the following problems is Case/Control Sampling LEAST likely to make a positive impact? A. Predicting a shopper's gender based on the products they buy B. Finding predictors for a certain type of cancer C. Predicting if an email is

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

一.iOS四层结构 1.Core OS 是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等,所有这些功能都会通过C语言的API来提供.另外,值得一题的是,这一层最具有UNIX色彩,如果你需要把 UNIX上所开发的程序移植到iPhone上,多半都会使用到Core OS的