Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 快速随机函数_Function_Swift_Return Type_Arc4random - Fatal编程技术网

Function 快速随机函数

Function 快速随机函数,function,swift,return-type,arc4random,Function,Swift,Return Type,Arc4random,我正在制作一个为玩家生成随机障碍物的游戏,所以我想要一个函数,返回一个生成障碍物的随机函数 func createObstacle() { var obstacles = [obstacle1(), obstacle2(), obstacle3()] var randomObstacle = Int(arc4random_uniform(UInt32(obstacles.count))) var obstacle = obstacles[r

我正在制作一个为玩家生成随机障碍物的游戏,所以我想要一个函数,返回一个生成障碍物的随机函数

 func createObstacle() {

        var obstacles = [obstacle1(), obstacle2(), obstacle3()]

        var randomObstacle = Int(arc4random_uniform(UInt32(obstacles.count)))

        var obstacle = obstacles[randomObstacle]
    }

问题是我真的不知道如何使我的函数返回另一个函数。

假设我正确理解了您的问题,您希望:

 func createObstacle() -> () -> () {

    var obstacles = [obstacle1, obstacle2, obstacle3]

    var randomObstacle = Int(arc4random_uniform(UInt32(obstacles.count)))

    return obstacles[randomObstacle]
}

查看有关函数的文档部分:

假设我正确理解了您的问题,您希望:

 func createObstacle() -> () -> () {

    var obstacles = [obstacle1, obstacle2, obstacle3]

    var randomObstacle = Int(arc4random_uniform(UInt32(obstacles.count)))

    return obstacles[randomObstacle]
}

查看有关函数的文档部分:

创建数组时,不要执行函数,只需使用它们的名称即可:

func obstacle1() -> Int {
    return 1
}

func obstacle2() -> Int {
    return 2
}

func obstacle3() -> Int {
    return 3
}

func getObstacle() -> () -> Int {
    var obstacles = [obstacle1, obstacle2, obstacle3]
    var randomObstacle = Int(arc4random_uniform(UInt32(obstacles.count)))

    return obstacles[randomObstacle]
}
本例中函数的返回类型是->Int-我使用Int表示可以从函数中获得返回值。->将是一个没有返回值的函数

您也可以为障碍物函数的类型创建类型别名,并返回:

typealias ObstacleFunction = () -> Int

func getObstacle() -> ObstacleFunction {
    // ..
}

创建数组时,不要执行函数,只需使用它们的名称:

func obstacle1() -> Int {
    return 1
}

func obstacle2() -> Int {
    return 2
}

func obstacle3() -> Int {
    return 3
}

func getObstacle() -> () -> Int {
    var obstacles = [obstacle1, obstacle2, obstacle3]
    var randomObstacle = Int(arc4random_uniform(UInt32(obstacles.count)))

    return obstacles[randomObstacle]
}
本例中函数的返回类型是->Int-我使用Int表示可以从函数中获得返回值。->将是一个没有返回值的函数

您也可以为障碍物函数的类型创建类型别名,并返回:

typealias ObstacleFunction = () -> Int

func getObstacle() -> ObstacleFunction {
    // ..
}

您可以将此代码用于随机障碍物

func createObstacle() -> () -> () {

var obstacles = [obstacle1, obstacle2, obstacle3]

var randomObstacle = obstacle\(arc4random_uniform(3) + 1)

return obstacles[randomObstacle]
}

希望这将对您有所帮助。

您可以将此代码用于随机障碍物

func createObstacle() -> () -> () {

var obstacles = [obstacle1, obstacle2, obstacle3]

var randomObstacle = obstacle\(arc4random_uniform(3) + 1)

return obstacles[randomObstacle]
}

希望这能对您有所帮助。

应该是这样的:返回障碍[RandomBarriend]谢谢您,它将运行函数并返回结果。在调用CreateShibird的过程中,您应该运行函数,如下所示:return barriends[randomshibird]谢谢,它将运行函数并返回结果。在调用CreateShibble的过程中,您应该运行您的函数