什么能完全区分Swift中的两个函数?
我想知道是什么让两个“相似的功能”彼此不同,并且可以毫不含糊地被称为
这就是我从自学中学到的东西 唯一性来自:函数名称参数顺序和参数名称返回类型.它们的组合必须是唯一的才能使功能独特(请参阅下面的示例) > Nmu1和Num2会导致含糊不清,因为返回类型(没有所谓的返回名称,函数名称已经充当此角色)在调用函数时不会被引用 //Num1 func foo(guy name: String) -> String { return "Hi (name)" } //Num2 func foo(guy name: String) { print("Hi (name)") } //Num3 func foo(guy called: String) -> String { return "Hi (called)" } //Num4 func foo(dude name: String) -> String { return "What's up (name)" } //Num5 func foo(man name: String,from place: String) { print("Hi! I'm (name) I come from (place)") } //Num6 func foo(from place: String,man name: String) { print("Hi! I'm (name) I come from (place)") } 问题:我可能会错过甚至可能误解某些部分.你可以纠正我并添加我错过的部分,这将是非常好的 谢谢 [更新] 回到官方swift文档的引用
参数,参数,参数标签和参数名称不同.这里的差异可以用于差分函数. 具有相同参数名称,相同参数顺序,相同返回类型甚至相同功能体的函数可以与不同参数标签区分开. func foo(dude name: String) -> Int { print("Hi (name)!") return 1 } func foo(man name: String) -> Int { print("Hi (name)!") return 1 } //foo(dude: String) & foo(man: String) is identical when calling 欲了解更多信息,请致电Multiple functions with the same name 解决方法
定义为与Obj-C兼容的方法,Num1和Num2不能一起存在,并且在NSObject子类中定义它们会有错误;但是,你可以将它们标记为@nonobjc并且错误将消失,因为Swift能够通过预期的返回类型选择正确的重载:
//Num1 @nonobjc func foo(guy name: String) -> String { return "Hi (name)" } //Num2 @nonobjc func foo(guy name: String) { print("Hi (name)") } 除了这个标记,你的所有其他要点对我来说都是正确的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |