如何在功能签名结尾处使用单词?

时间:2017-11-14 02:35:50

标签: swift

我正在尝试编写这样的委托界面:

// This delegate is just a sample. It could be any delegate.
// What's important here is the third function's signature.
protocol MyViewDelegate {
    func myView(_ myView: MyView, didDoSomething something: String)
    func myView(_ myView: MyView, didDoAnotherThing thing: String at: Date)
    func myView(_ myView: MyView, didDoYetSomethingElse)
}

但是,第三个功能是无效的语法。它用于通知代理某些特定事件发生,因此签名很重要,我希望所有功能签名保持一致。

问题:第三个功能的推荐签名是什么?

2 个答案:

答案 0 :(得分:2)

这可能不太令人满意,但你根本做不到。编写这样的方法有很多先例:




  func myViewDidAskUserName(_ myView:MyView)
  




例如,来自Apple的常见问题:




  func applicationDidFinishLaunching(_ application:UIApplication)&# XA;  



答案 1 :(得分:1)

您正试图让代理人选择发生的两种事情:说出某些内容,或者询问用户名。在Swift中,这种可能性的选择是 enum

enum WhatHappened {
    case didSaySomething(String)
    case didAskUserName
}

现在写下你的方法签名:

protocol MyViewDelegate {
    func myView(_ myView: MyView, _ whatHappened: WhatHappened)
}

可以通过说

来调用该方法
myView(theView, .didSaySomething("hello"))

或者说

myView(theView, .didAskUserName)