在swift中为变量赋值函数

时间:2015-06-27 08:06:17

标签: swift sprite-kit

我使用此代码创建了一个Buttons类

http://nathandemick.com/programming/tutorial/2014/09/23/buttons-sprite-kit-using-swift.html

操作变量没有参数 如果我将init和动作改为

 var action: (id: Int) -> Void

之后,我无法在touchesEnded方法

中执行该功能
func test(){
    println("test");
}

func testTwo(id: Int){
    println("testTwo");
}


var action: () -> Void;
action = test
action() // prints test

var actionTwo: (id: Int) -> Void;
actionTwo = testTwo

// This work
actionTwo(id: 9); // prints testTwo

// But I want this to work
actionTwo();

2 个答案:

答案 0 :(得分:0)

您需要为函数提供一个定义,使整数参数可选。

func testTwo(id: Int? = nil) {
   print("something")
}

答案 1 :(得分:0)

如果使用可变数量的参数定义函数,例如

    func testTwo(args:Int...) {
        println("testTwo")

        // enumerate over arguments
        for arg in args {
            println (arg)
        }
    }

然后使用

正确定义/分配变量
    var actionTwo: (args:Int...) -> Void
    actionTwo = testTwo

您可以通过

调用带/不带参数的函数
    // This works
    actionTwo(args:9)

    // and this also works
    actionTwo()

    // and, BTW, this works as well
    actionTwo(args:1, 2, 3, 4, 5)