[Swift] Functions

김승윤·2022년 5월 1일

Swift 정리

목록 보기
5/6
post-thumbnail

Functions

Defining and Calling Funcitons (정의와 호출)

정의

func greet(person: String) -> String P{
	let greeting = "hello, " + person
	return greeting
}

호출

print(greet(person: "Anna"))

Function Parameters and Return Values (함수 파라미터와 반환 값)

  • 파라미터가 없는 함수

func sayHelloWorld() -> String {
	return "hello, world"
}
print(sayHelloWorld())
  • 복수의 파라미터를 사용하는 함수

func greet(person: String, alreadyGreeted: Bool) -> String {
	if alreadyGreeted {
		return greetAgain(person: person)
    } else {
        return greet(person: person)
    }
}    
  • 반환값이 없는 함수

fucn greet(person: String) {
	print("Hello, \(person)!")
}
greet(person: "Dave")

*주의 - 사실 ()를 사용한 빈 튜플인 Void라는 특별한 형을 반환한다.

  • 복수의 값을 반환하는 함수

    튜플을 함수의 반환 값으로 사용가능하다.
func hi(array: [Int]) -> (min: Int, max: Int) {
	var currentMin = array[0]
    var currentMax = array[0]
    ~
    return (currentMin, currentMax)
  • 옵셔널 튜플 반환형

    반환 값에 ? 물음표가 붙는다.
(min: Int, max: Int)?

실제 반환 값에 접근하기 위해서는 if let 과 같은 옵셔널 체인을 이용해 unwrapping 해줘야 한다.

if let bounds = minMax ~
  • 함수 인자 라벨과 파라미터 이름

    적절한 파라미터 이름을 지정해 함수 내부, 호출시에 사용할 수 있다.
    인자 라벨을 지정할 경우 함수 내부에서와 호출시의 이름을 다르게 사용할 수 있다.
func greet(person: String, from hometown: String) -> String {
    return "Hello \(person)!  Glad you could visit from \(hometown)."
}
print(greet(person: "Bill", from: "Cupertino"))
// Prints "Hello Bill!  Glad you could visit from Cupertino."
  • 인자 생략

func someFunction(_ firstParameterName: Int, secondParameterName: Int) {
    // 함수 안에서 firstParameterName, secondParameterName
    // 인자로 입력받은 첫번째, 두번째 값을 참조합니다.
}
someFunction(1, secondParameterName: 2)
  • 기본 파라미터 값

    (: Int = 12)과 같이 함수의 파라미터값에 기본값을 설정할 수 있다. 기본값이 설정되어 있는 파라미터는 함수 호출시 생략 가능하다.

  • 집합 파라미터

    인자 값으로 특정 타입의 집합 값을 사용할 수 있다.
    (_ numbers: Dobule...)

  • 인아웃 파라미터

    인자 값을 직접 변경하는 파라미터로 inout 이라는 키워드를 사용한다.

func swapTwoInts(_ a: inout Int, _ b: inout Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}

var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("someInt is now \(someInt), and anotherInt is now \(anotherInt)")
// Prints "someInt is now 107, and anotherInt is now 3"

함수의 타입

함수의 타입은 파라미터 타입과 반환 타입으로 구성되어 있다.

  • 함수 타입의 사용

    함수를 변수처럼 정의해서 사용할 수 있다.
var mathFunction: (Int, Int) -> Int = addTwoInts
  • 파라미터 타입으로써의 함수 타입

    파라미터에 함수 타입을 사용할 수 있다.
func printMathResult(_ mathFunction: (Int, Int) -> Int, _ a: Int, _ b: Int) {
    print("Result: \(mathFunction(a, b))")
}
printMathResult(addTwoInts, 3, 5)
// Prints "Result: 8"
  • 반환 타입으로써의 함수 타입

func chooseStepFunction(backward: Bool) -> (Int) -> Int {
    return backward ? stepBackward : stepForward
}
profile
정리왕을 꿈꾸며!

0개의 댓글