2016-09-14 4 views
2
나는이 코드 작업을 간단하게 조각했다 신속 2.3에서

: 빠른 3로의 전환과 함께 지금스위프트 3 : 가능한 한 더 이상 "+"연산자를 사용하여 여러 개의 문자열을 결합

let joinedString = partOne! + PartTwo! + PartThree! + PartFour! 

내 머리를 두들겨 봤는데을 가장 모호한 설명과 파란색 중 (24)에 대한 이상 오류가 .. 이것은 그들 중 하나입니다

코드의 같은 라인이 제공 오류 : 그러나

Ambiguous reference to member '+' 

내가 지금처럼 그들을 분할하는 경우 :

이것은 작동합니다 ...이 같은 여러 문자열 연결을 제거했는지 또는 버그가 있습니까? 컴파일러가 '+'가 변수이거나 다른 것으로 명명 된 것처럼 보입니다.

편집 : 그것은이 관련이있을 것으로 보인다 다른 오류가 비록

: 당신은 위쪽이 옵션 문자열의 이동하면 This Question

또한 충돌합니다. 나는 선택적 바인딩이 그때 갈 길이라고 생각한다. 이 버그가 꽤 오랫동안 거기에 있었던 것처럼 보입니다.

+0

봐 (http://swiftlang.ng.bluemix.net/#/repl/57d8fcb1f623dd089776d581) (스위프트 버전을. 3.0 (Release), Platform : Linux (x86_64)) - 문자열을 사용하는 경우, 문자열을'+'와 결합 할 수 있습니다. –

+0

고마워. 네 부분은 String 뿐이지 만 선택 사항입니다. (그것들이 합류하는 방법은 분명히 존재할 때만 작용합니다.) 그래서 아마도 그 문제의 일부 였을 것입니다. 나는 두 가지 부분 접근법을 계속 사용 하겠지만, 왜 여전히 궁금해합니다. – BossBols

+1

추가 할 내용 : 방금 시도했습니다. 그것은 옵션과 모래 상자 충돌과 같은 오류가 있지만 더 많은 정보와 함께. 세 번째 옵션을 추가하면 세 줄의 충돌을 일으키는 인쇄 줄조차도 : http://swiftlang.ng.bluemix.net/#/repl/57d8fea044c863091c3eaf7c – BossBols

답변

1

이것은 버그처럼 보입니다. 더 자세히 조사하겠습니다. 우리가 다른 연산자 !의 동작을 시뮬레이션 할 경우 잘 작동합니다 : [이 데모에서]

postfix operator |! {} 
postfix func |! <T>(rhs: T?) -> T { 
    return rhs! 
} 

let s1: String? = "Hello" 
let s2: String? = " " 
let s3: String? = "World" 
let joined = s1|! + s2|! + s3|! // "Hello World" 
+0

다른 것을 찾으면 고맙습니다. 위의 링크를 편집했습니다. 분명히 버그가 꽤 오랫동안 거기에 있었고 때로는 문자열을 범인으로, 내 경우에는 "joinedString"변수에 따라 연산자를 선택적 또는 선택하지 않음을 나타냅니다. – BossBols