iOS 프로그래밍 기초 (4)

if 문

Swift에서는 if문 다음의 실행 코드가 한 줄이라도 중괄호{ } 안에 작성

 

guard 문 (조건식이 거짓이면 실행)

guard <조건식> else {
    // 조건식이 거짓일 때 실행될 코드
    <코드 블록을 빠져 나갈 구문>
}
// 표현식이 일 경우에 실행되는 코드

- else 절에서 코드 블록을 빠져 나갈 구문(return, break, continue, throw)을 반드시 포함

func multiplyByFive(value: Int?) {
    guard let number = value, number < 5 else { // 거짓일때 실행
        print("수가 없거나 5보다 크다.")
        return
    }
    print(number*5) // 조건식이 참일 때 실행
}
multiplyByFive(value: 2)    //10
multiplyByFive(value: nil)  //수가 없거나 5보다 크다.
multiplyByFive(value: 7)    //수가 없거나 5보다 크다.

 

switch-case 문 예제

let someCharacter: Character = "c"
switch someCharacter {
    case "a":
    print("The first letter of the alphabet")
    case "b":
    print("The second letter of the alphabet")
    case "c":
    print("someCharacter")
    default:
    print("Some other chracter")
}
// someCharacter
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001)
var body = ""

switch bmi {
    case 40...:
    body = "3단계 비만"
    case 30..<40:
    body = "2단계 비만"
    case 25..<30:
    body = "1단계 비만"
    case 18.5..<25:
    body = "정상"
    default:
    body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
// BMI:20.76.., 판정:정상
var x : Int = 21
switch (x)
{
    case 0...10 where x % 3 == 0 :
    print("x는 0~10 사이의 3의 배수")
    case 11...20 where x % 3 == 0 :
    print("x는 11~20 사이의 3의 배수")
    case 21...30 where x % 3 == 0 :
    print("x는 21~30 사이의 3의 배수")
    default:
    print("Nothing")
}
// x는 21~30 사이의 3의 배수

 

fallthrough

case별로 빠져 나가지 않고 

var x = 2
switch (x)
{
    case 1:
    print("여기부터 실행(1)")
    fallthrough
    case 2:
    print("여기부터 실행(2)")
    fallthrough
    case 3:
    print("여기부터 실행(3)")
    fallthrough
    default:
    print("여기부터 실행(4)")
}
// 여기부터 실행(2)~(4)

 

함수 선언

 func <함수명> (<매개변수 이름>:<매개변수 타입>, <매개변수 이름>:<매개변수 타입>, ...) -> <리턴값 타입> { <함수코드>}

 

func sayHello() {	// 리턴값이 없으면 void 생략가능
	print("Hello")
}

func message(name: String, age: Int) -> String {
	return("\(name) \(age)")
}

 

내부 매개변수(parameter name) 이름과 외부 매개변수(argument label) 이름, 함수명(#function 리터럴)

func add(first x: Int, second y: Int) -> Int {
	return(x+y)	// 함수 정의할 때는 내부 매개변수명을 사용
}
add(first:10, second:20)	// 함수 호출할 때는 외부 매개변수명을 사용

 

func add(x: Int, y: Int) -> Int {
    print(#function)    // add(x:y:)
	return(x+y)	
}
print(add(x:10, y:20))

func add(first x: Int, second y: Int) -> Int {
	print(#function)    // add(first:second:)
	return(x+y)	
}
print(add(first:10, second:20))

func add(_ x: Int, _ y: Int) -> Int {
    print(#function)    // add(_:_:)
	return(x+y)	
}
print(add(10, 20))

func add(_ x: Int, with y: Int) -> Int {
	print(#function)    // add(_:with:)
	return(x+y)	
}
print(add(10, with:20))

 

함수로 여러 결과 반환

func converter(length: Float) -> (yards: Float, inches: Float, meters: Float) {
    let yards = length * 0.010936
    let inches = length * 0.393701
    let meters = length * 0.01
    return (yards, inches, meters)
}

var lengthTuple = converter(length:150)
print(lengthTuple)  // yards: 1.6404, inches: 59.05515, meters: 1.5
print(lengthTuple.yards)    // 1.6404
print(lengthTuple.inches)   // 59.05515
print(lengthTuple.meters)   // 1.5
import Foundation

func calculate(x: Int, y: Int) -> (sum : Int, sub : Int, div : Double, mul : Int)
{
    let sum = x+y
    let sub = x-y
    let div = Double(x)/Double(y) // Swift에서는 같은 자료형끼리만 연산 가능
    let mul = x*y
    return (sum, sub, div, mul)
}

var result = calculate(x:8, y:6)
print(result.sum)   // 14
print(result.sub)   // 2
print(String(format: "%.3f",result.div))    // 1.333
print(result.mul)   // 48

print(type(of:calculate))   //(Int, Int) -> (sum: Int, sub: Int, div: Double, mul: Int)

 

가변 매개변수

함수가 가변 매개변수를 받기 위해서 ... (3개의 점)을 사용

func add(numbers:Int...) {
    var sum:Int = 0
    for num in numbers {
        sum += num
    }
    print(sum)
}
add(numbers:1,2,3,4,5,6,7,8)
// 36

 

inout 매개변수 : call by reference 구현

var myValue = 10
func doubleValue (value: inout Int) -> Int {
    value += value
    return(value)
}
print(myValue)  // 10
print(doubleValue(value : &myValue))    //20
print(myValue)  //20

 

 

[iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용 변형 및 요약]

 

'Language > Swift 수업' 카테고리의 다른 글

iOS 프로그래밍 기초 (6)  (0) 2021.10.09
iOS 프로그래밍 기초 (5)  (0) 2021.10.02
iOS 프로그래밍 기초 (3)  (0) 2021.09.17
iOS 프로그래밍 기초 (2)  (0) 2021.09.10
iOS 프로그래밍 기초 (1)  (0) 2021.09.10