在数组中使用函数 Swift

Using functions in arrays Swift

我使用以下函数从数组中随机检索一个人:

func getRandomPerson() -> String{

if(personArray.isEmpty){
    return ""
} else {
    var tempArray: [String] = []
    for person in personArray{
        tempArray += [person.getName()]
    }
    var unsignedArrayCount = UInt32(tempArray.count)
    var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount)
    var randomNumber = Int(unsignedRandomNumber)
    if tempArray.isEmpty {
        return ""
    } else {
        return tempArray[randomNumber]
    }
}
}

我想在字符串数组中使用这个函数,像这样:

 var theDares: [String] = ["Dare1 \(getRandomPerson())", "Dare2", "Dare3", "Dare4", "Dare5"]

但是当我使用这些函数时,它只运行调用了一次函数。在这种情况下,每次使用 "Dare1" 时,都可以使用函数 运行 吗?

提前致谢

我想你是在问你是否可以设置你的数组,这样每次你在索引 0 处获取对象时,它都会在那里重新构建值。

简短的回答是否定的。您的代码正在创建一个字符串数组,索引 0 处的项目是使用函数调用一次构建的。

但是,可以自定义 class 实现下标运算符。您可以创建一个看起来像数组的自定义对象,并允许您使用 Int 索引对其进行索引。为了响应索引运算符,您可以 运行 构建并返回随机字符串的自定义代码。

由于听起来您是创建自定义 class 的初级程序员,因此下标运算符的实现可能超出您目前的能力范围。

这样试试:

let personArray = ["John", "Steve", "Tim"]

var randomPerson: String {
    return personArray.isEmpty ? "" : personArray[Int(arc4random_uniform(UInt32(personArray.count)))]
}


println(randomPerson)   // "Steve"