我只是学习编码所以我决定从 Swift开始.我正在跟踪mac在 here的游览,我在计算数字总和的部分,然后它告诉你尝试做一个平均数字的函数.
func averageOf(numbers: Int...) -> Int {
    var sum = 0
    var total = 0
    var average = 0
    for number in numbers {
        sum += number
        totaL++
    } **Execution was interrupted,reason: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP,subcode=0x0)**
    average = sum/total
    return average
}

我做错了什么(我需要学习什么才能正确行事)?

我猜你没有参数调用你的函数,即:
averageOf()

这是可变参数允许的,数字将是一个空数组.这将导致您尝试将未更改的和除以未更改的总和(因为您将循环遍历循环,没有数字中没有元素),因此将0除以0,并且您将获得除零错误.

为了防止这种情况发生,您可以要求用户提供至少一个数字:

func averageOf(first: Int,rest: Int...) -> Double {
    var sum = first
    var total = 1.0
    for number in rest {
        sum += number
        totaL++
    }
    return Double(sum)/total
}

这样,如果您尝试不带参数调用它,您将收到编译器错误.

顺便说一句,我改变了你的版本以返回一个Double而不是一个Int,你可能想要试验这两个版本来看看为什么.

(这种技术类似于声明标准的lib max函数,它至少需要2个参数:

func max<T : Comparable>(x: T,y: T) -> T

但是有3个或更多的重载版本:

func max<T : Comparable>(x: T,y: T,z: T,rest: T...) -> T

第一个版本的原因,而不是直接切换到至少需要两个版本的可变版本,然后你可以将它传递给像reduce这样的东西,以找到集合中的最大值,例如减少(a,max))

关于Swift:执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_1386_INVOP,子代码= 0x0)的更多相关文章

  1. Swift之旅三函数与闭包

    用func来定义一个函数。试一试去掉day参数。你可以用嵌套函数来把又长又臭的代码组织一下。函数其实是闭包的一个特例。闭包内的代码可以访问到变量和函数必须是与闭包创建的范围是一致的,即便闭包是在另一个范围内执行——在讲嵌套函数时就说过这个例子了。试一试重写这个闭包,对所有奇数都返回0有几种方法可以更简明地写闭包。单行语句的闭包隐式返回语句中的值。作为最后一个参数传到函数里的闭包可以在括号后面马上出现。

  2. Swift 学习笔记 4-函数

    欢迎加QQ群讨论:157672725函数1.使用func来声明一个函数,使用名字和参数来调用函数,使用->来指定函数返回值的类型2.使用元组来让一个函数返回多个值。该元组的元素可以用名称或数字来表示3.函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式4.函数可以嵌套,被嵌套的函数可以访问外侧函数的变量5.函数可以作为另一个函数的返回值6.函数做参数传入另一个函数

  3. Snail—Swift基础学习之函数

  4. Swift学习一:认识必要数据类型

    我很高兴为你讲解我的学习过程。首先,你会问为什么不选择ObjC而是Swift,我想这个问题只有苹果自己知道,我们只有猜。不过从代码结构上来看Swift确实比OC简洁多了,Swift省掉那些OC难以理解的符号,比如NSLog传递消息时是这么写的:NSLog;学过C#的Programmer应该认识这个@,在OC中我不知道怎么理解,所以就不管了。首先,我强烈建议去买台MAC,也就一万左右。我的虚拟机是:VMwareWorkstation12.1.0+OSXEICapitan10.11.2,请原谅我是一个强迫症患

  5. Swift -- 函数的使用(函数作为参数、返回值、嵌套函数)

    {ifarr.count==0{returnnil}varmax:Int=arr[0]varmin:Int=arr[0]varavg:Float=0varsum:Int=arr[0]varindex=0foriteminarr{index++ifitem>max{max=item}ifitemInt{varsum=0;foriteminnums{sum+=item}returnsum}varx=sum()vary=sumvarz=sum//函数嵌套funcfifteen()->Int{varx=10fun

  6. swift 中常用的进制转换

  7. swift-输入输出参数

  8. swift 学习笔记(18)-函数

    函数function有参数有返回值的函数多参函数利用元组实现多返回值可选类型作为参数或者返回值参数标签新特性,默认参数值输入输出参数关键字inout函数类型

  9. 如何在SWIFT中的IOS CORE-DATA请求中使用SQL GROUP BY和SUM函数?

    我有一个表(Transactions),其中包含包含Account_name和交易金额的记录.我想计算每个帐户的所有交易的总额,以“私人”开头,交易金额为>1000.我想按名称按降序排列帐户.所以sql请求会是这样的:我如何在Swift中使用Core-DATA来做到这一点.谢谢请记住,CoreData不是关系数据库,因此您应该认为实体不是“表”,对象不是“记录”.另请注意,按照惯例,属性名称不应以

  10. NSTextField,更改Swift文本

    我似乎无法在我想要做的Mac应用程序中更改文本标签.我正在使用swift.这是我正在使用的代码:这些似乎都不行,这是我需要解决的唯一的问题来完成我的程序.附:当我写sumlab.text它说NSTextField没有一个成员命名的文本NSTextField与UITextField不同.它没有文本属性.然而,它继承自具有stringValue属性的NSControl.

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部