Как создать функцию суммирования и вызвать ее, передав массив Int в Swift Playground? - PullRequest
1 голос
/ 12 марта 2019

Я создал функцию, которая выполняет суммирование чисел, принимая массив Int и возвращая сумму элементов в виде целочисленного значения. Ниже приведен мой код, который я проверил, чтобы он был логически правильным, но я получаю сообщение об ошибке во время упоминания времени выполнения, «индекс вне диапазона» в консоли и «

ошибка: выполнение было прервано, причина: EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP, субкод = 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])

Ответы [ 2 ]

7 голосов
/ 12 марта 2019

Вы можете сделать это напрямую, используя функции высокого порядка, подобные этой

[1,2,3].reduce(0, +)
2 голосов
/ 12 марта 2019

Вы получаете ошибку, потому что массив 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
}
...