ㅇTL

함수 본문

swift

함수

정노르레기 2021. 5. 12. 15:55

*메서드 = 클래스 / 구조체 / 열거형 안에서 선언된 함수

 

-함수 선언

func 함수이름(변수이름: 타입, 변수이름: 타입 ...(없으면 걍 가로안 비움)) -> 리턴타입(Void 등등) {

함수 구현

return 값 (void면 return만 쓰거나 암것도 안씀)

}

 

-호출

함수이름(변수이름: 값, 변수이름: 값)

호출하고 값은 버리고 싶으면

_=a(~) 하면 됨 ! _ 에 값을 받으면 되는거얌

 

-func ff (a: Int, b: String){~ } 

여기서 a,b는 매개변수인데 함수내에서 이 매개변수들은 상수로 취급됨. (let 임) 즉 값을 바꿀 수 없다~

그래서 머 바꾸고싶으면

굳이 그러고싶으면

새로운 a,b 변수를 만든 뒤 대입해서 그걸바꾸면됨

var a=a

var b=b 하면 된다는 말씀 (=섀도 복사본)

 

-func ff (a:Int ) {~ } 

여기서 a는 매개변수인데, 지역매개변수(함수내에서쓰이게되는변수이름) 이자 외부매개변수명(호출할 때 부르는 이름)이 된다

근데 만약 외부 매개변수명 다르게하고시퍼

 

1. 없애고 싶다

-> func ff (_ a: Int) { ~ }

이런식으로 변수이름앞에 _ 를 붙여주면 됩니다

그럼호출할 때 ff(a: 3) 이렇게 안주고 ff(3) 이렇게 줘야하게 됩니다~.~

 

2. 이름을 바꾸고 싶다

전달인자 레이블 -> 함수 호출시 매개변수 역할 더 명확히하거나 함수 사용자의 입장에서 표현하고자할때 사용,

함수의 중복정의도 가능 굳

func 이름(전달인자 이름: 타입)->{}

func greeting(to friend: String, from me:String){ (그리팅 to fring까지모두 함수의 이름으로취급->중복정의조음)

print( "\(friend) and \(me)" ) -> 함수 내에선 매개변수 이름을 사용

}

greeting(to: "저니", from: "조니") ->함수 호출시에는 앞에 쓴 이름으로 사용!

 

 

-매개변수 기본값 (디폴트) 설정 -> 매개목록 목록 중 뒤쪽에 위치하는게 굳

func 함수이름(a: Int, me: String="juny") {

어쩌구

}

호출시는 함수이름(a: 3, me: dfs) 근데이때 me를 안주게되면

함수이름(a:3) 이렇게만 주면 juny로 쓰이는거! 말그대로 기본값!!

 

-여러 결괏값 반환하기 -> 튜플 !

func 이름(매개변수) -> (a: Int, b: String) { ~return (~, ~) }이렇게하묜 됩니드라호출시let k=함수호출  -> k는 그 튜플을 담는 변수가 됨k.a, k.b 이렇게 각 변수 쓸 수 있음

 

-가변 매개변수 -> 몇개 올지모를때사용

func 함수이름(변수이름: 타입 ...) -> 리턴타입 {}

요로캐하면됩니다 마지막변수에 ... 찍으면 여려개받을수잇읍니다 한 함수당 한번입니당

부를 때

함수이름(변수이름: 값,값,값,값) 이런식으로 주면 댑니다

이때 nil넣거나 전달인자 값에 아무것도안넣으면 오류뜸

아무것도안넣고싶으면 걍 변수이름 안쓰면됨

 

-데이터 타입으로서의 함수

함수=객체 !! -> 매개변수를 통해 전달가능!

함수의 타입표현

(매개변수1 타입ㅇ, 매개변수 2 타입 ...)->반환타입

ex1 변수생성

var a: (String, String)->Void = greeting(to:from:)

( 걍 var a=greeting 해도 되는듯)

ex2 함수 매개변수로

func newfunc(function: (Stirng, String)->Int) { ~ }

func(function: greeting(friend:me:))

func(function: a)

깔깔 easy

'swift' 카테고리의 다른 글

class  (0) 2021.05.12
제어흐름 -> 반복제어 흐름(반복문)/조건부 흐름 제어(if)  (0) 2021.05.12
기본 개념정리  (0) 2021.05.04