개발

Swift iOS guard let vs let

소소ing 2020. 9. 30. 16:10
반응형

해당 글에서 코드 부분은 파란색으로 표기 됩니다.

해당 글에서 중요 부분은 붉은색으로 표기 됩니다.

 

guard let

guard 뒤의 코드의 실행 결과가 true라면 코드가 계속 실행되는 형태이다.

주로 비교가 되는 if 구문과는 다르게 guard 구문은 무조건 else 구문이 따라와 주어야 한다.

 

이 내부 코드에는 자신보다 상위 코드 블록을 종료하는 코드가 반드시 들어가야 한다. 

즉, 코드 블록 종료시 return, break, continue, throw 등 제어문 전환을 위한 명령을 사용해 주어야 한다.

 

guard의 경우 Bool 타입의 값으로 guard문을 동작시킬 수 있지만 옵셔널 바인딩 역할로도 사용된다.

이렇게 사용시 guard로 옵셔널 바인딩 된 상수를 guard 구문 실행 코드 아래부터 함수 내부의 지역상수처럼 사용 가능해진다.

 

 

//if let

func printName(){

  var value:String?

  value = "TEST"

  print(value) // Optional("TEST")

  if let name = value {

    //if문 안에서만 name 변수를 사용 가능.

    print(name) // "TEST"

  } 

}

 

//guard let

func printName(){

  var value:String?

  value = "TEST"

  print(value) // Optional("TEST")

  guard let name = value else { return }

  //name변수는 메소드 내에서 지역상수처럼 사용 가능.  

  print(name) // "TEST"

}

반응형