【swift初学者求助】关于找不到某重载的错误提示

问题描述

【swift初学者求助】关于找不到某重载的错误提示

刚开始学swifit,跟着斯坦福大学公开课学的
做一个计算器
代码如下:

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var display: UILabel!

var userIsInTheMiddleOfTypingANumber: Bool = false

var operandStack = [Double]()

var displayValue: Double{
    get {
        return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
    }
    set {
        display.text = "(newValue)"
        userIsInTheMiddleOfTypingANumber = false
    }
}

func performOperation(operation: (Double, Double) -> Double) {
    if operandStack.count >= 2 {
        displayValue = operation(operandStack.removeLast(), operandStack.removeLast())
        enter()
    }
}

private func performOperation(operation: Double -> Double) {
    if operandStack.count >= 1 {
        displayValue = operation(operandStack.removeLast())
        enter()
    }
}

@IBAction func appendDigit(sender: UIButton) {
    let digit = sender.currentTitle!

    if userIsInTheMiddleOfTypingANumber {
        display.text = display.text! + digit
    }
    else {
        display.text = digit
        userIsInTheMiddleOfTypingANumber = true
    }
}

@IBAction func enter() {
    userIsInTheMiddleOfTypingANumber = false
    operandStack.append(displayValue)
    println("operandStack = (operandStack)")
}

@IBAction func operate(sender: UIButton) {
    let operation = sender.currentTitle!

    if userIsInTheMiddleOfTypingANumber {
        enter()
    }

    switch operation {
        case "×":

// performOperation {$0 * $1}
performOperation(*)
case "÷":
performOperation {$1 / $0}
case "+":
// performOperation {$0 + $1}
performOperation(+)
case "?":
performOperation {$0 - $1}
case "√":
performOperation(sqrt)
default: break
}
}
}

实现乘法计算的时候
这么写没有错误提示:
performOperation(*)

而实现加法计算的时候
同样的写法提示错误
performOperation(+)

错误内容:
Could not find an overload for '+' that accepts the supplied arguments

弄不明白
乘法和加法都是二元运算
为什么乘法这么写没有错误
加法却有错误呢
望大神指教
谢谢!

解决方案

http://stackoverflow.com/questions/29457720/compiler-error-method-with-objective-c-selector-conflicts-with-previous-declara
时间那么久了,你应该也解决了吧,上面是类似的问题。不能重载但却重载了的原因。
我也是新手,多交流学习。

时间: 2024-11-03 08:08:31

【swift初学者求助】关于找不到某重载的错误提示的相关文章

asp.net初学者求助,asp.net网页 登录失败问题 错误如下 请问是为什么呢?怎么解决呢

问题描述 "/"应用程序中的服务器错误.系统找不到指定的文件.说明:执行当前Web请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息.异常详细信息:System.ComponentModel.Win32Exception:系统找不到指定的文件.源错误:执行当前Web请求期间生成了未经处理的异常.可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息.堆栈跟踪:[Win32Exception(0x80004005):系统找不到指定

oc-ios初学者求助,在线等

问题描述 ios初学者求助,在线等 控制台没输出啊,是主函数没运行吗?! 解决方案 截图吧这图片太模糊了 解决方案二: iOS初学者 解决方案三: 你自己明明写着如果相等 返回NO, 这5和5相等,当然返回NO 结果是no吧? 解决方案四: 你是不是加了断点,程序还没运行到输出那一句 解决方案五: 把这个断点删了.右键删除 或者鼠标按住左键拖走他 解决方案六: 解决方案七: 你加了断点还没执行到输出那条语句呢当然没输出了 解决方案八: 你加了断点还没执行到输出那条语句呢当然没输出了

关于do-while语句中while()判断条件--c语言初学者求助

问题描述 关于do-while语句中while()判断条件--c语言初学者求助 求两个正整数的最大公约数与最小公倍数如下程序 #include void main() { int m,n,a,b,i; scanf("%d%d",&m,&n); if(m>0&&n>0){ b=m*n; if(m<n) {a=m; m=n; n=a; } do{i=m%n; m=n; n=i;}while(n=0); printf("最大公约数为

ios-IOS swift 录音报错找不到原因

问题描述 IOS swift 录音报错找不到原因 var recordSetting=NSMutableDictionary()//录音设置 //设置录音格式 AVFormatIDKey==kAudioFormatLinearPCM recordSetting.setValue(kAudioFormatMPEG4AAC, forKey: AVFormatIDKey) //设置录音采样率(Hz) 如:AVSampleRateKey==8000/44100/96000(影响音频的质量) record

初学者求助!第二个JSP问题不会编写,谢谢!

问题描述 初学者求助!第二个JSP问题不会编写,谢谢! (1)编写一个JavaBean:Book.java,含有属性bookid(String),并编写对应的getter和setter(2)编写一个JSP:show.jsp,利用动作元素实现对Book.java的访问(设置和显示属性值) 解决方案 如果jsp里面的html代码被解析,直接下载源码:https://yunpan.cn/cSwBnBu4ubAIc 访问密码 908c 自己写的希望可以帮到你. 初学者建议 多百度 多查查 多尝试.而不要

c++初学者求助:c++vector 初始化出现问题

问题描述 c++初学者求助:c++vector 初始化出现问题 #include #include using namespace std; int main() { vector v1; vector v2; cout<<"请输入v1的内容,整数"< int i=0,j=0; while(cin>>i) v1.push_back(i); cout<<"请输入v2的内容,整数"< while(cin>>j)

异常-c++初学者求助 Access violation reading location

问题描述 c++初学者求助 Access violation reading location 函数如下 #include<iostream>#include<fstream>#include<iomanip>using namespace std; int main(){ int Month Day; string Name Email Address; while (cin >> Month >> Day >> Name >

一个简单的c语言填空 初学者求助

问题描述 一个简单的c语言填空 初学者求助 如图所示 空格处该填什么呢?我填了ptr-stu<3 ptr++ 但是学校的系统说不对 解决方案 ptr < stu + 3; ptr++ 解决方案二: 楼上加一,应该是对的 解决方案三: c语言中指针减法是没有意义的

java初学者求助。方法整不明白了。遇到这个瓶颈好久了,大家给指点指点。

问题描述 java初学者求助.方法整不明白了.遇到这个瓶颈好久了,大家给指点指点. 题目是:以public static void displaySortedNumbers(double num1,double num2,double num3)作为方法头,编写程序,提示用户输入三个数,然后按升序来显示出来. 新手,懂得不多,请大家指点时照顾一下,不要说太复杂或是我没学到的知识.麻烦大家了.下面是我的,代码.我的问题集中在,主方法里的调用问题.调用的方法参数里我试过输入什么数字都不影响程序的结果