我想创建一个具有不同活动的协议。我的参考是Java Android上的接口,我们可以将变量创建为接口,然后像在类中实现的那样进行初始化。那么,等效于swift代码的接口是什么?
//Android Interface
private OnValueChanged joinDay, birthDay;
//initialize
joinDay = new OnValueChanged(value -> {
//somecode
});
birthday = new OnValueChanged(value -> {
//somecode
});
interface OnValueChanged{
void didChanged(Date value)
}
//END OF ANDROID INTERFACE
//SWIFT PROTOCOL
class myClass : OnValueChanged{
func didChanged(Int value){
//somecode
}
}
protocol OnValueChanged{
func didChanged(Int value)
}
//END OF SWIFT PROTOCOL
我想要创建一个变量或类似的东西,可以为同一个类实现不同的代码,例如在Android Side上。
如何迅速做到这一点?
感谢
在Swift中,您不需要其他类型。您的Java接口可以在Swift中用closure表示。具体来说,它是(Int) -> Void
类型的闭包。
您可以在Swift中这样声明joinDay
和birthday
:
var joinDay: ((Int) -> Void)?
var birthday: ((Int) -> Void)?
要分配“实现”,请执行:
joinDay = { value in
// do something with the parameter "value"
print(value)
}
和在Swift中调用joinDay.didChanged(someValue)
的等效项是:
joinDay?(someValue)
有关如何使用闭包的更多信息,请参见Swift指南中的Closures。>>