Kotlin中的条件接口

时间:2018-03-12 13:01:54

标签: swift interface kotlin swift-protocols

在Swift中,我们可以根据条件定义一个可以由n_err_block := 100; <block of statement....> n_err_block := 200; <block of statement....> n_err_block := 300; <block of statement....> class符合的协议:

struct

protocol AlertPresentable { func presentAlert(message: String) } extension AlertPresentable where Self : UIViewController { func presentAlert(message: String) { let alert = UIAlertController(title: “Alert”, message: message, preferredStyle: .alert) alert.addAction(UIAlertAction(title: “OK”, style: .default, handler: nil)) self.present(alert, animated: true, completion: nil) } } 协议受到限制,只能由AlertPresentable符合。有没有办法在Kotlin中获得相同的结果?

1 个答案:

答案 0 :(得分:9)

如果我理解你正在尝试完成的事情,你可以使用多种类型的扩展函数作为接收器类型的上限:

fun <T> T.presentAlert(message: String) 
    where T : UIViewController, T : AlertPresentable {
    // ...
}