2014-10-02 3 views

답변

50

그렇지 않습니다. 이 언어 described in the Swift book 같은 값을 돌려 할당 표준 원치 않는 부작용을 방지하는 기능을한다 : C 대물-C에 할당 연산자 달리

, 스위프트에 할당 연산자 자체 값을 반환하지 않기 . 다음 문은 유효하지 않습니다

if x = y { 
     // this is not valid, because x = y does not return a value 
    } 

이 기능은 연산자 (==)에 동일한 실제로하고자하는 경우 사고에 의해 사용되는 할당 연산자 (=)을 방지 할 수 있습니다. x = y이 유효하지 않은 경우, Swift는 이러한 종류의 오류를 코드에서 피할 수있게 도와줍니다.

이렇게하면 매우 일반적인 오류를 예방할 수 있습니다. 이러한 종류의 실수는 다른 언어 (예 : Yoda conditions)를 사용하여 완화 할 수 있지만 신속한 설계자는 분명히 언어 수준에서 자신을 발로 쏠 수없는 것을 확인하는 것이 더 낫다고 결정했습니다. 당신이 한 줄에 할당 할 절박한 경우에, 당신은 튜플 구문을 사용할 수

blah = blah2 = 3 

,하지만 당신은 여전히 ​​특히 각각의 값을 할당해야 할 것 : :하지만 당신이 사용할 수 없다는 뜻인가

(blah, blah2) = (3, 3) 

... 나는 그것을 추천하지 않습니다. 허용 대답이 말한대로

blah = 3 
blah2 = 3 
+2

이것은 "초기/젊은"언어에 항상 나타나는듯한 무거운 물건입니다. 언어의 신이 주관적으로 부적절하다고 생각하는 코드를 작성하는 것을 불가능하게 만든다 (이것은 하나의 예이고, 또 다른 하나는 부동 소수점에 '0'을 접두사로 붙일 필요성이다 [let x = .5'를 신속하게 작성]). – dave

+2

blah = 3; 깜박임 2 = 3; –

2

: 그냥 모든 일을 입력하면 처음에는 불편 느낄 수 있지만 것은 내 의견으로는, 갈 수있는 가장 좋은 방법입니다 당신은 그러나 당신이에서 할당 할 수 없습니다, 몇 가지 엄격한 구문을 얻을 수 있습니다 a ~ b ~ c 여러 줄을 사용하지 않아도됩니다 (안전을 위해). 다음은 한 줄에 여러 변수를 선언하고 할당하는 좀 더 간결한 구문의 예제입니다.

var red, green, blue, alpha : CGFloat 
(red, green, blue, alpha) = (0.0, 0.0, 0.0, 0.0) 
ledColor.getRed(&red, green: &green, blue: &blue, alpha: &alpha) 
+0

위의 코드를 설명해주십시오. 정말 해독 할 수 없었다 :) –

+0

처음 두 줄을 이해 했습니까? –

+0

예 ... 선언 및 과제가 있습니다. –

관련 문제