[英]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.