2015-03-06 6 views
1

Я пытаюсь создать переменную, которая получает случайное слово из массива. Я использую метод ниже, чтобы найти его, однако он дает мне ошибку «Missing возврата функции, как ожидается, вернется«Строка»Array in Swift return error

let array: [String] = ["Example1", "Example2"] 

var chooseOne: String { 

     [Int(arc4random_uniform(UInt32(self.array.count)))] 

    } 

Как получить функцию для работы? Я совершенно новый, чтобы быстро, и любая помощь будет оценена. Спасибо заранее!

+0

Вы должны выбрать ответ – Jeef

ответ

0

Две проблемы:

1) Вам нужно вернуться туда. Вычислимые свойства (т. Е. var propertyName: Type { someCalculation }) не похожи на замыкания (где простые выражения с 1 строкой могут пропускать оператор return и иметь значение выражения).

2) Предполагая, что вы хотите получить значение из массива, вам нужно фактически индексировать массив.

var chooseOne: String { 

    return array[Int(arc4random_uniform(UInt32(self.array.count)))] 

} 
0

Ваш код должен возвращать строку:

var chooseOne: String { 

     return "\(Int(arc4random_uniform(UInt32(self.array.count))))" 

    } 
0

Ошибка указывает на то, что вы пропустили добавить return заявление:

return [Int(arc4random_uniform(UInt32(self.array.count)))] 
^^^^^^ 

Однако код имеет другую ошибку: вы не указываете массив. Правильный способ:

return self.array[Int(arc4random_uniform(UInt32(self.array.count)))] 
     ^^^^^^^^^^ 
0

Переменная должна возвращать строку.

let array = ["Example1", "Example2"] 

var chooseOne: String { 

    let randomIndex = Int(arc4random_uniform(UInt32(array.count))) 

    return array[randomIndex] 
} 
0
extension Array { 
    var chooseOne:T { 
     return self[Int(arc4random_uniform(UInt32(count)))] 
    } 
} 

let myArray = ["Example1", "Example2","Example3", "Example4", "Example5","Example6", "Example7","Example8", "Example9", "Example10"] 
let myDoubleArray = [1.3, 2.7,3.1,4.4, 5.5,6.7, 7.2,8.8, 9.19, 10.09] 
let myIntArray = [3, 2, 1, 4, 5, 7, 8, 9, 19, 11] 

println(myArray.chooseOne)  // "Example3" 
println(myDoubleArray.chooseOne) // "5.5" 
println(myIntArray.chooseOne) // "8" 
0

Эта функция, что я использую для случайного выбора чего-то из массива:

func function_name() -> return_type { 
      ^    ^
     var unsignedArrayCount = UInt32(diceImages.count) 
     var unsignedRandomNumber = arc4random_uniform(unsignedArrayCount) 
     var randomNumber = Int(unsignedRandomNumber) 

     return array_name[randomNumber] 
        ^
    } 

Я положил морковь под код, который специфичен для ситуации вы используете его in