java 重载 泛型_带有重载泛型方法的重载解决问题

本文探讨了Swift中函数参数命名与重载可能导致的反直觉行为。通过示例展示了当通用参数与未命名单个参数共存时,如何巧妙地修复潜在问题。提出了命名参数、抛弃命名参数以及强制使用参数名称等解决方案,以避免调用混淆。
摘要由CSDN通过智能技术生成

哈,是的,这是违反直觉的 . 当您具有通用的第二个参数与未命名的单个通用参数时,这似乎是特定的 .

一些可能的修复:

当然,您在示例中未尝试的一个案例不是命名 x ,而是命名 v :

foo.foo(1, v: "") // prints foo(x: Int, v: T)

或者,如果您抛弃命名参数 v :

class Foo {

func foo(v: T) {

println("foo(v: T)")

}

func foo(x: Int, _ v: T) {

println("foo(x: Int, v: T)")

}

}

let foo = Foo()

foo.foo("") // prints foo(v: T)

foo.foo(1, "") // prints foo(x: Int, v: T)

foo.foo(1, "") // prints foo(x: Int, v: T)

幽默地,这翻转了以前工作过的一个电话:

foo.foo(1, v: "") // prints foo(v: T)

或者,您可以为所有内容强制使用参数名称:

class Foo {

func foo(#v: T) {

println("foo(v: T)")

}

func foo(#x: Int, v: T) {

println("foo(x: Int, v: T)")

}

}

let foo = Foo()

foo.foo(v: "") // prints foo(v: T)

foo.foo(x: 1, v: "") // prints foo(x: Int, v: T)

foo.foo(x: 1, v: "") // prints foo(x: Int, v: T)

foo.foo(x: 1, v: "") // prints foo(x: Int, v: T)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值