[swift] 함수(fuction)의 기본 개념정리

[swift] 함수(fuction) 정리

같은 코드를 복사 붙여넣기 하면서 쓰지 않기 위해 함수를 사용한다.
함수의 기능에 대해 정리하면서 남긴 기록.

정의하는 방법

사용법은 간단하다 func 키워드 뒤에 함수 이름과 ()를 붙여주면된다.

func printHello(){
  print("hello")
}

사용하는 방법

간단하다 함수이름과 빈()를 붙여주면 된다.

printHello()
// hello 출력

인자 넘겨주기

()사이에 이름과 타입을 명시해주면 된다.

let speedLimit = 100
let mySpeed = 80

func printSpeedViolationStatus(speed: Int){
  print(speed > speedLimit ? 'Speed violation!' : 'Keep driving.')
}

printSpeedViolationStatus(speed: mySpeed)
// Keep driving.

여러개의 인자를 넘겨주는 방법은 , 로 추가해서 넘겨준다

let speedLimit = 80
let mySpeed = 100

func printSpeedViolationStatus(speed: Int, speedLimit: Int){
  print(speed > speedLimit ? 'Speed violation!' : 'Keep driving.')
}

printSpeedViolationStatus(speed: mySpeed, speedLimit: speedLimit)
// Speed violation!

인자 기본 값(Default Parameter Values)

기본값을 넣을 수 있다.
speedLimit: Int = lowLimit 와 같이 작성한다.

let mySpeed = 100
let lowLimit = 80

func printSpeedViolationStatus(speed: Int, speedLimit: Int = lowLimit){
  print(speed > speedLimit ? 'Speed violation!' : 'Keep driving.')
}

printSpeedViolationStatus(speed: mySpeed)
// Speed violation!

외부 호출 인자 (External Parameter Names)

함수에서 인자를 호출 할 때 외부에서 호출하는 이름을 다르게 줄 수 있다. 사용에 따라 용이한 경우에 이용한다.
for speed: Int 의경우 함수가 호출될 때 speed 변수가 값을 넣으려면 for를 이용해 넣어주어야 한다.

let benz = 130
let audi = 79
let lowLimit = 80

func printSpeedViolationStatus(for speed: Int, speedLimit: Int = lowLimit){
  print(speed > speedLimit ? 'Speed violation!' : 'Keep driving.')
}
printSpeedViolationStatus(for: benz)
// Speed violation!

이름없는 인자

함수를 선언 할 때 인자의 이름에 의미가 없을 경우 이름을 사용하지 않을 수 있다.
인자의 이름이 구별하는데 인자의 뜻을 구별하는데 의미가 없다면 사용하지 않는 것이 코드를 이해하는데 도움이 될 수 있다.

//  func printFastestSpeed(speed1: Int, speed2: Int){
//    print(speed1 >= speed2 ? speed1 : speed2)
//  }
//  printFastestSpeed(speed1: 80, speed2: 100)

func printFastestSpeed(_ speed1: Int, _ speed2: Int){
  print(speed1 >= speed2 ? speed1 : speed2)
}
printFastestSpeed(80,100)
// 100

반환값 (Returning Value)

반환값이 있는 함수는 호출된 자리에 반환값을 반환한다.

let speedLimit = 80
let mySpeed = 100
let lowLimit = 80

func printSpeedViolationStatus(speed: Int, speedLimit: Int = lowLimit) -> Bool{
  return speed > speedLimit
}
printSpeedViolationStatus(speed: mySpeed)
// true

한줄로 작성된 값을 반환하는 함수의 경우 return 키워드를 생략할 수 있다.

func printSpeedViolationStatus(speed: Int, speedLimit: Int = lowLimit) -> Bool{
  speed > speedLimit
}

함수의 이름 짓기(Naming Function)

함수가 어떤 행동을 해야하는지 동사로 시작하고, 값에대한 명사룰 이용햐 지어준다.

func printSomething(){
  print("something")
}

func calculateAmountOff() -> Int{
  abs(targetAmount - myAmount)
}
donaricano-btn

댓글

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] Github 이슈 라벨(issue labels)

[git] git의 upstream과 origin 헷갈리는 사람 손!