2016-06-18 2 views
-1

아래 코드에서 코드의 return 문이 어디로 반환되는지 혼란 스럽습니까? 실행하면 예상대로 작동하지만로 돌아 않습니다이 코드 줄은 어디에 있습니까?

if userIsInTheMiddleOfTyping == true 

또는 그것으로 돌아 않습니다

if let digit = sender.currentTitle 

는 다음이 적용 코드의 전체 덩어리입니다.

class ViewController: UIViewController { 

private var userIsInTheMiddleOfTyping = false 
private var decimalUsed = false 

@IBAction private func touchDigit(sender: UIButton) 
{ 
    if let digit = sender.currentTitle { 

     if userIsInTheMiddleOfTyping == true { 

      if digit == "." && decimalUsed == true { 
       return //where does this return to? 
      } else if digit == "." && decimalUsed == false { 
       decimalUsed = true 
      } 


      let textCurrentlyInDisplay = display.text! 
      display.text = textCurrentlyInDisplay + digit 

     } else { 
      display.text = digit 
     } 

     userIsInTheMiddleOfTyping = true 

    } 
} 
+2

이 정직하게 방문 할 수 있습니다, 그 코드는 좋은 코드의 예 아닙니다. 그것은 끔찍한 일입니다. 부울을 명시 적으로 비교하지 마십시오. 또한,'decimalUsed' 변수가 필요 없습니다. 현재 텍스트를 확인하여 동적으로 확인할 수 있습니다. 코드는'guard' 절을 사용하여 단순화 될 수 있습니다. – Sulthan

+1

Srsly, 어떻게 돌아 오는지 알 수 없습니까? 관련 폐쇄가 있거나 아무것도 이해하지 못한다면 약간의 불확실성이 있습니다. 그러나 이것은 평범한 오래된'return'을 가진 단순한 오래된 함수입니다. 'return '이 무엇을 의미하는지 다시 한 번 읽어보십시오. – luk2302

+0

감사합니다. @ 설화! 나는 여러분의 의견을 확실히 고려할 것입니다. 나는 아직도 로프를 배우고있다. :) –

답변

3

이 경우는 기본적으로 여기

touchDigit(...)를 호출하는 코드의 라인에 반환 그래서 return 항상 함수에서 반환은 return 그냥 touchDigit 기능의 실행을 중지합니다. return 단순히 코드를 중지

+0

'touchDigit' 함수의 실행을 멈추고 그 리턴 이후의 모든 것은 실행되지 않을 것이라고 정교 할 수 있습니다. – Ike10

+0

@ Ike10 제 생각에는 "실행 중지"는 이미 실행 된 후에 아무 것도 실행되지 않는다는 것을 의미하지만 어쨌든 추가했습니다. :) – Keiwan

2

합니다 (return를 다음 코드 중 어느 것도 실행되지 않음을 의미합니다 ). 원하는 경우 함수에 넣을 수 있습니다. 예 :

특정 명령문이 참인 경우에만 코드를 계속 실행하려면 return이 거짓이면 해당 코드를 중지 할 수 있습니다.

func something(a: Int, b: Int) { 
    if a != b { 
     return//Stops the code 
    } 
    //Some more code -- if a is not equal to b, this will not be called 
} 

이 기능은 void 기능에서만 작동합니다. 그것은 다른 사람들과도 잘 작동 할 수 있지만 약간 다릅니다. 그와 함께 무엇인가를 돌려 보내야합니다. 다른 예 :이 함수에서

func somethingElse(a: Int, b: Int) -> Bool{ 
    if a != b { 
     return false //stops the code, but also returns a value 
    } 
    return true //Will only get called if a == b 
} 

, 그것은 Boolean를 반환한다. a! = b이면 코드를 중지하는 동안 false를 반환하기 때문에 return false이 기록됩니다.

반품에 대한 자세한 내용은, 당신이 Apple's documentation on functions.

관련 문제