在Swift中返回整数列表

时间:2015-04-28 15:42:51

标签: python list swift random integer

我是一名业余Python程序员,正在尝试使用Apple的新Swift编程语言。我最近决定重写一个我在Swift中使用的Python脚本,作为将其构建到iOS应用程序的第一步。我遇到了一些挑战,到目前为止我一直无法解决。在Python中,我有一个返回随机整数列表的函数:

# Roll the Attackers dice in Python
def attacker_rolls(attack_dice):
    attacker_roll_result = []
    if attack_dice >= 3:
        attacker_roll_result += [randint(1,6), randint(1,6), randint(1,6)]
    elif attack_dice == 2:
        attacker_roll_result += [randint(1,6), randint(1,6)]
    elif attack_dice == 1:
        attacker_roll_result = [randint(1,6)]
    attacker_roll_result.sort(reverse=True)
    print "The attacker rolled: " + str(attacker_roll_result)
    return attacker_roll_result

到目前为止,我在Swift中拥有的内容:

// Roll the attackers dice in Swift
func attackerRolls(attackDice: Int) -> Array {
    if attackDice >= 3 {
        var attackerRollResult = [Int(arc4random_uniform(6)+1), Int(arc4random_uniform(6)+1), Int(arc4random_uniform(6)+1)]
        return attackerRollResult
    }
}

*上面的Swift功能是无法解决的,但你可以看到我的目标。

因此,在尝试重写此函数时,我得到两个eror之一。或者,就像现在一样,我得到:

  

参考通用类型'数组'需要< ...>

中的参数

或者,如果我改为使用Int返回类型:

  

' [INT]'不可转换为' Int'

我知道我在Swift中使用的随机函数有一些并发症,Pythons randint没有,但到目前为止我一直无法追踪具体问题。 我的方法是一个随机整数错误还是我错误地返回列表? 有Swift经验的人都有想法吗? Obj-C中的答案也可能有所帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

使用arc4random不是问题,这很好。这是因为Swift中的数组内容是打字的,所以你需要返回一个Array<Int>(或更常见的[Int],它是同一个语法的糖。)

如果你修复了这个问题,那么你将得到一个不同的编译错误,因为所有代码路径都必须返回一个值,所以请尝试以下方法:

// Roll the attackers dice in Swift
func attackerRolls(attackDice: Int) -> Array<Int> {
    var attackerRollResult: [Int]
    if attackDice >= 3 {
        attackerRollResult = [Int(arc4random_uniform(6)+1), Int(arc4random_uniform(6)+1), Int(arc4random_uniform(6)+1)]
    }
    else {
        attackerRollResult = [Int(arc4random_uniform(6)+1)]
    }
    return attackerRollResult
}

您可能还希望在此用例中使用switch而不是if