Adi*_*dib -4 overloading ios swift swift3
在ViewController类中,我有两个mapView
函数:
第一个mapView函数处理叠加(如地图上的线条,形状等)
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
Run Code Online (Sandbox Code Playgroud)
第二个mapView函数处理地图上的注释和引脚
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView?
Run Code Online (Sandbox Code Playgroud)
来自C/Python背景,我不明白你如何能够有两个命名相同的函数,并且它们不会相互覆盖.这个过程背后的想法是什么?
对不起,但保罗马托斯的回答是错的.
函数重载确实存在于Swift中; 当两个函数具有相同的名称但签名不同时,意味着不同的参数/返回类型.因此,这是合法的:
func f(x:Int) {}
func f(x:String) {}
Run Code Online (Sandbox Code Playgroud)
这是合法的,因为Swift可以根据您提供的价值来判断您正在调用哪一个x
.那是超载.
但是你的(OP)问题与此无关.你的问题是关于这种情况:
func f(x:Int) {}
func f(y:Int) {}
Run Code Online (Sandbox Code Playgroud)
这些只是两个完全不同的功能.第一个被调用f(x:)
,第二个被调用f(y:)
.他们f
和我说的那样不同g
.他们有完全不同的名字.
所以,外卖是:
参数标签是名称的一部分.具有不同名称的功能(将参数标签考虑在内)从未有过怀疑.
具有相同名称但不同参数/返回类型的函数也是合法的; 这是超载,它并没有在你的问题出现.
归档时间: |
|
查看次数: |
69 次 |
最近记录: |