如何通过在 swift playground 中传递 Int 数组来创建求和函数并调用它?
Posted
技术标签:
【中文标题】如何通过在 swift playground 中传递 Int 数组来创建求和函数并调用它?【英文标题】:How to create a summation function and call it, by passing Int array in swift playground? 【发布时间】:2019-03-12 09:11:50 【问题描述】:我创建了一个执行数字求和的函数,方法是接受 Int 数组并将元素的总和作为整数值返回。下面是我的代码,我检查它在逻辑上是正确的,但是在运行时提到,控制台中的“索引超出范围”和“
错误:执行被中断,原因:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)。
代码:
import UIKit
var x=[Int]()
var i=0
func dosomething(y:[Int])->Int
for index in 0..<y.count
if index==0
x[index]=0
x[index]=x[index]+y[index]
i=x[index]
else
x[index]=x[index-1]+y[index]
i=x[index]
return i
dosomething(y:[1,2,3])
【问题讨论】:
为什么你的两个方法同名? 您可以使用reduce
func,如第一个答案所示。我还建议使用正确的变量名,因为 var555
和 var55
非常令人困惑。
您应该问自己的问题:var555
有多大??
你能解释一下你的逻辑吗?我不明白为什么一组数字的总和有这么复杂的逻辑。
如果数组不够大,你不能只使用下标赋值,尤其是当它像你的var555
一样为空时。 var555[index2]=0
— 无效代码。
【参考方案1】:
你可以直接使用像这样的高阶函数
[1,2,3].reduce(0, +)
【讨论】:
是的,我看到我们可以这样做,但想知道我的代码出了什么问题 @user28434 你说得对,你的 var555 是空的,那么你不能使用像这样的下标赋值 var555[index2]=0【参考方案2】:您收到错误,因为 X
数组为空并且您尝试设置不存在的值。您应该首先创建该值,然后将其更改为您想要的,以这种方式更改您的方法:
func dosomething(y:[Int])->Int
x = [Int]()
for index in 0..<y.count
if index==0
x.append(0)
x[index]=x[index]+y[index]
i=x[index]
else
x.append(0)
x[index]=x[index-1]+y[index]
i=x[index]
return i
【讨论】:
你不需要在append
之后设置x[index]=0
。
谢谢,帮了大忙。以上是关于如何通过在 swift playground 中传递 Int 数组来创建求和函数并调用它?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift Playgrounds 中睡觉并获取最新的异步值?
将图像添加到 swift Playground [iPad]