흥미로운 내용입니다. @ marcos의 제안을 따라 뭔가를하지 않고는 불가능하다고 생각합니다.
이
func f(s: String, i: Int) { println("_: \(s)") }
func f(#s: String, #i: Int) { println("s: \(s)") }
그런 다음 튜플을 통해 호출 할 수 있습니다 : 지금 당신은 하나를 임명했다 인수를 제외하고 동일한 두 가지 기능을 정의한다고 가정
let named_pair = (s: "hello", i: 1)
named_pair.s // hello
let anon_pair = named_pair as (String,Int)
// or anon_pair: (String,Int) = named_pair, if you prefer
anon_pair.s // no such member 's'
을 : 문제는 당신이 튜플에 이름을 "버려야"할 수있다 이름이 인수 대라는 이름으로 :
f(named_pair) // prints s: hello
f(anon_pair) // prints _: hello
// but if you try to call a named argument function with unnamed tuples:
func g(# s: String, # i: Int) { println("s: \(s)") }
g(anon_pair) // compiler error
let h = g
h(anon_pair) // compiler error
h(named_pair) // works
하지만이 이름을 멀리 캐스팅 할 수 있기 때문에이 작업을 수행 할 수 있습니다
// compiles and runs just fine...
(g as (String,Int)->())(anon_pair)
let k: (String,Int)->() = g
// as does this
k(anon_pair)
이 기능을 사용하면 내가 알 수있는 한 형식을 사용하여 인수 이름으로 만 오버로드 된 함수를 명확히 할 수 없음을 의미합니다.
내게 도움이된다면 알려주세요. 나는 더 많은 것을 도울 수있다 –