首页 > 解决方案 > 为什么在if语句之外使用return时在范围内找不到'newArray'

问题描述

import Foundation

func aVeryBigSum(ar: [Int]) -> Int {

    if ar[0] < ar[1]{
    
        var newArray = 1
        
    } else if ar[0] > ar[1[]{
        var newArray = 0
    }
    
    return newArray
}


print(aVeryBigSum(ar: [5,8]))

标签: swiftif-statementreturn

解决方案


您正在创建不同newArray的 s in ifandelse语句。并且您不能使用超出其范围的属性。所以只需在iforelse语句中返回一个值。或者newArray像第二个例子一样在函数范围(不是 if-else 语句的范围)中创建。


第一的

func aVeryBigSum(ar: [Int]) -> Int {

  if ar[0] < ar[1] {
    return 1
  } else {
    return 0
  }
}

第二

func aVeryBigSum(ar: [Int]) -> Int {
  let newArray: Int

  if ar[0] < ar[1] {
    newArray = 1
  } else {
    newArray = 0
  }
  return newArray
}

Swift 中解释的范围和上下文


推荐阅读