Day5

희희희·2021년 8월 22일

Writing functions

아래와 같이 func뒤에 function의 이름을 선언하고 {}안에 코드를 작성하면 맨 아래처럼 이 function을 call해주면 {}안의 코드가 실행됨.

func functionName() {
	Code
}
functionName()

Accepting parameters

function의 이름 뒤 ()에 parameter를 지정해줄 수 있음.
(parameterName: data type)

func square(number: Int) {
	print(number * number)
}

returning values

func square(number: Int) -> Int {
	return value
}

-> 뒤에 있는 타입으로 반환한다는 말
따라서 value는 Int 타입이 되어야함.

Parameter labels

parameter를 선언할 때 띄어쓰기를 이용해 아래처럼 선언할 수 있음.

func sayHello( to name: String) {
	print(“Hello, \(name)”)
}
sayHello(to: “Taylor”)

이때 to는 externally하게 쓰이고, name은 internally하게 쓰임.

Omitting parameter labels

_를 이용하여 parameter를 생략할 수 있는데 혼란이 생길 수 있기에 써주는게 좋음.

func greet(_ person: String) {
	print(“Hello, \(person)!”)
}
greet(“Taylor”)

Default parameter values

함수를 선언할 때 default값을 같이 정해줄 수 있음.

func greet(_ person: String, nicely: Bool = true) {
	Code
}

nicely parameter에 default값으로 true를 줌.

Variadic functions

…을 이용해 여러 개의 값을 받을 수 있음

func square(numbers: Int…) {
	for number in numbers {
		print(“\(number * number)”)
	}
}
square(numbers: 1, 2, 3, 4)

Writing throwing function

bad input이나 코드 내에서 잘못 진행되고 있을 경우 throws를 이용하여 예외를 던질 수 있음.

enum PasswordError: Error {
	case obvious
} //type을 Error로.

func checkPassword(_ password: String) throws -> Bool {
	if password == “password” {
		throw PasswordError.obvious
	}
	return true
}

위 처럼 예외를 던짐.
일관된 주제를 표현하므로 enum 이용하는 것이 적절.
throws와 throw인 것 확인!!

Running throwing functions

위 코드에서 던진 오류를 do - try - catch를 이용해 처리를 함.

do { try checkPassword(“password”)
	print(“good”) } catch {
 print(“not good”)
}

에러를 던졌을 때 catch안의 코드를 실행하여 예외를 처리함.

inout parameters

함수 안에서 parameter 값을 바꾸고 싶을 경우엔 inout사용
다른 값을 넣을 때 &를 이용함.

func doubleInPlace(number: inout Int) {
	number *= 2
}

var myNum = 10
doubleInPlace(number: &myNum)

HackingWithSwift_Day5

profile
iOS 어플 개발 연습

0개의 댓글