본문 바로가기
Smart Device/Swift

Control Flow(for-in, if, switch, while, do) 예제

by 언덕너머에 2014. 6. 4.

- for, if

  let indeividualScores = [75, 43, 103, 87, 12]

  var teamScore = 0

  for score in individualScores {

    if score > 50 {

      teamScore += 3

    } else {

      teamScore += 1

    }

  }

  println(teamScore)


  --dictionary에서 최대값 구하는 예제

  let interestingNumbers = [

      "Prime": [2, 3, 5, 7, 11, 13],

      "Fibonacci": [1, 1, 2, 3, 5, 8],

      "Square": [1, 4, 9, 16, 25],

  ]

  var largest = 0

  for (kind, numbers) in interestingNumbers {

      for number in numbers {

          if number > largest {

              largest = number

          }

      }

  }

  println(largest)


  -- 아래 두 구문은 완전히 동일한 구문이다.

  var firstForLoop = 0

  for i in 0..2 {

      firstForLoop += i

  }

  firstForLoop

 

  var secondForLoop = 0

  for var i = 0; i < 3; ++i {

      secondForLoop += 1

  }

  secondForLoop


- optional value

  var optionString: String? = "Hello"

  optionString == nil


  var optionalName: String? = "John Appleseed"

  var greeting = "Hello!"

  if let name = optionalName {

    greeting = "Hello, \(name)"

  }


- switch 

case문을 빠져나오기 위해 명시적으로 break를 사용하지 않는다.

  let vegetable = "red pepper"

  switch vegetable {

  case "celery":

    let vegetableComment = "Add some rainins and make ants on a log."

  case "cucumber", "watercress":

    let vegetableComment = "That would make a good tea sandwich."

  case let x where x.hasSuffix("pepper"):

    let vegetableComment = "Is it a spicy \(x)?"

  default:

    let vegetableComment = "Everything tastes good in soup."

  }


case문에 조건절이 포함될 수 있다.

  let myPoint1 = (1, -1)

  switch myPoint1 {

  case let(x, y) where x == y:

      println(1)

  case let(x, y) where x == -y:

      println(2)

  case let(x, y):

      println(3)

  }

  결과 : 2


tuples 기능을 사용할 수 있다. tuples는 두개 이상의 값을 한꺼번에 처리할 수 있는 자료구조

  let myPoint = (1, 1)

  switch myPoint {

  case (0, 0):

      println("원점에 있다")

  case (_, 0):    // '_'에는 어떤 숫자라도 올 수 있다. ex) (5, 0), (100, 0)

      println("(\(myPoint.0), 0) X축에 있다.")

  case (0, _):

      println("(0, \(myPoint.1)) Y축에 있다.")

  case(-2...2, -2...2):

      println("(\(myPoint.0), \(myPoint.1)) 사각형 안에 있다.")

  default :

      println("(\(myPoint.0), \(myPoint.1)) 사각형 밖에 있다.")

  }


다중조건을 지정할 수 있다.

  let myGrade1 = "C학점"

  switch myGrade1 {

      case "A학점", "B학점" :

          println("장학금 대상자입니다. 축하합니다.")

      case "C학점", "D학점" :

          println("장학금 대상자가 아닙니다. 열심히 공부하세요")

      default :

          println("낙제입니다.")

  }


'...'로 범위를 지정할 수 있다.

  let myScore75 = 75

  switch myScore75 {

      case 85...100:

          println("A")

      case 75...84:

          print("B")

      default :

          println("^^;")

  }


- while, do

  var n = 2

  while n < 100 {

      n = n * 2

  }

  println(n)

 

  var m = 2

  do {

      m = m * 2

  } while m < 100

  println(m)

  


참고 : Apple Inc. ‘The Swift Programming Language.'

'Smart Device > Swift' 카테고리의 다른 글

Swift 함수 #3 - nested functions(중첩함수)  (0) 2014.06.09
Swift 함수 #2 - 여러개의 반환값과 인수를 가지는 함수  (0) 2014.06.09
Swift 함수 #1  (0) 2014.06.07
Simple Values  (0) 2014.06.04
Hello, Swift  (0) 2014.06.04