在数组中使用函数 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"
我使用以下函数从数组中随机检索一个人:
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"