본문 바로가기
🍎iOS프로그래밍/오늘의 공부

Swift의 함수 형태 및 사용 / iOS프로그래밍

by 둥둥동동# 2021. 9. 26.
728x90

함수의 형태 및 사용

 

Swift의 함수의 형태와 사용방법에 대해 알아 보겠습니다

 

 

 

Parameter와 argument의 차이

 

Parameter(매개변수)는 함수 정의부의 값을 매개변수, 호출시의 값을 argument(인수)로 부릅니다

Parameter

 

argument

 

 

함수의 형태

 

C스타일 함수

int add (int x, int y){
    return (x + y);
}
add(1,2);
cs

 

Swift스타일 함수

func add(x:Int, y:Int) ->Int{
    return (x + y)
}
print(add(x:1,y:2))
//3.0
cs

 

Swift에서 함수를 호출할 때 변수명을 꼭 명시해 주어야 합니다

리턴값이 없을 경우엔 ->Void 생략가능합니다

 

함수의 자료형, 함수명

다음과 같이 표현합니다

함수명 add(x:y:)
함수타입 (Int,Int) -> Int

 

 

 

외부 매개변수 이름(Argument label)

 

외부에서 함수를 호출할 때 사용하는 argument label을 지정할 수 있습니다

func add(first x:Int, second y:Int->Int{
    return (x + y)
}
print(add(first:1,second:2))//3
cs

외부 매개변수 이름을 지정했다면 꼭 해당 이름을 사용해야 합니다

아래처럼 내부이름을 사용하면 컴파일 에러가 발생하게 됩니다

 

잘못된 예시

func add(first x:Int, second y:Int) ->Int{
    return (x + y)
}
print(add(x:1,y:2))//error
cs

 

매개변수 이름을 일부 사용하고 싶지 않으면 아래와 같이 사용할 수 있습니다

func add(_ x:Int, with y:Int->Int{
    return (x + y)
}
print(add(1,with:2))//3
cs

_은 함수를 하나의 문장처럼 사용할 수 있어서 많이 사용하는 스타일 입니다

add 1 with 3 

 

외부이름을 사용하면 함수명도 바뀌게 됩니다

외부이름을 출력하려면 #function으로 출력이 가능합니다

 

예시)

func add(_ x:Intwith y:Int->Int{
    print(#function)
    return (x + y)
}//add(_:with:)
func mul(first a:Int, b:Int)->Int{
    print(#function)
    return (a*b)
}//mul(first:b:)
cs

 

 

매개변수 디폴트값 지정

 

func add(_ x:Intwith y:Int = 3->Int{
    return (x + y)
}
print(add(2))//5
cs
func add(_ x:Intwith y:Int = 3->Int{
    return (x + y)
}
print(add(2,with:5))//7
cs

y값을 지정하지 않으면 자동으로 Int 3을 가지게 됩니다

 

 

여러 값 리턴

 

튜플 형태로 여러개의 값을 리턴할 수 있습니다

func converter(meters:Float)->(inch:Float, ft:Float){
    let inch = meters * 39.3
    let ft = meters * 3.2
    return (inch, ft)
}
var lengthTuple = converter(meters:10)
print(lengthTuple)//(inch:393.0, ft:32.0)
print(lengthTuple.inch)//393.0
print(lengthTuple.ft)//32.0
cs

 

가변 매개변수

 

매개변수 하나로 여러개의 값을 받을 수 있습니다

func add(numbers:Int...){
    var sum=0
    for num in numbers{
        sum += num
    }
    print(sum)
}
add(numbers:1,2,3,4)//10
cs

 

 

Call by reference

 

값이 아니라 주소를 참조 할 경우 매개변수의 값을 직접 변경할 수 있습니다

var myNum = 24
 
func half(num: inout Int-> Int {
    
    num = num/2
    return num
}
print(myNum)//24
print(half(num:&myNum))//12
print(myNum)//12
cs

매개변수 타입 앞에 inout을 붙여주면 Int타입의 주소값을 받을 수 있습니다

 

 

참고 자료

 

iOS프로그래밍기초(21-2학기)한성현교수님 강의 내용

Swift 문서 참조

https://docs.swift.org/swift-book/LanguageGuide/Functions.html

 

 

728x90
반응형

댓글