簡體   English   中英

如何在Swift中復制此Java接口?

[英]How do you replicate this java interface in Swift?

我很快就知道使用協議,但是您不能像在Java中使用接口那樣單獨實例化協議。 這是Java中的示例

restartGameButton.setOnClickListener(new GuiClickListener() {

            @Override
            public void onClick(float x, float y) {
                // TODO Auto-generated method stub
                restartScene();
                //I can put whatever code I want in here. 
                //This is great because I can embed this inside of another class
                //like a game scene.
            }
        });

在restartGameButton內部,我有一個僅保存接口的變量。 在setOnClickListener()中,我可以使用要求實現的onClick()方法創建一個新的接口實例,並將其傳遞給restartGameButton。 這使您可以在onClickMethod中添加所需的任何代碼。 您如何在Swift中做到這一點? Swift似乎只允許您使用協議本質上是對對象的擴展……不酷。

使用可選的閉包屬性。

class GameButton {
    var x: Float
    var y: Float
    var onClickListener: ((x: Float, y: Float)->Void)?

    func click(){
        if let cb = self.onClickListener {
            cb(x: self.x, y: self.y)
        }
    }

    init(){
        x = 1
        y = 2
    }
}


var button = GameButton()

button.onClickListener = {
    (x: Float, y: Float)->Void in

    println(x)
    println(y)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM