코딩하는 제리

[Swift] swift 함수 본문

iOS/SwiftUI

[Swift] swift 함수

JerryCho 2022. 1. 3. 11:24

// 함수 기본
func 함수이름(매개변수1: 매개변수1타입, 매개변수2: 매개변수2타입) -> 반환타입 {
	return 반환값
}
func sum(a: Int, b: Int) -> Int {
	return a+b
}

// 반환값이 없는 함수
func printMyName(name: String) -> Void {
	print(name)
}
// 또는 Void 안적어도 됨
func printMyName(name: String) {
	print(name)
}

// 함수 호출
sum(a: 2, b: 3)	// 5
printMyName(name: "jerry") // jerry

// 함수 매개변수 기본값 설정 (기본값을 가지는 매개변수는 뒤쪽에 위치시키는게 좋다고함)
func printMyName(name: String = "jerry") {
	print("Hello \(name)!")
}

// 전달인자 레이블(Argument Label)
// 사용자의 입장에서 매개변수의 역할을 더 명확하게 표현하고 싶을 때 사용
func greeting(to friend: String, from me: String) {
	print("Hello \(friend)! I'm \(me)")
}
greeting(to: "tom", from: "jerry")

// 가변 매개변수
// 전달 받을 값의 개수를 알기 어려울 때 사용. 함수당 하나만 가질 수 있다.
// 매개변수 목록에서 뒤쪽에 위치 시키는게 좋다.
func sayHelloToFriends(me: String, friends: String...) -> String {
	return "Hello \(friends)! I'm \(me)"
}
print(sayHelloToFriends(me: "jerry", friends: "tom", "tom1", "tom2"))
// Hello ["tom", "tom1", "tom2"]! I'm jerry
print(sayHelloToFriends(me: "jerry"))
// Hello []! I'm jerry

// 데이터 타입으로서의 함수
// 햠수를 변수, 상수 등에 할당 가능하며 매개변수를 통해 전달도 가능
var someFunction: (String, String) -> Void = greeting(to:from:)
someFunction("tom", "jerry") // Hello tom! I'm jerry

func runAnother(function: (String, String) -> Void) {
	function("tom", "jerry")
}
runAnother(function: greeting(friend:me:))	// Hello tom! I'm jerry
runAnother(function: someFunction)			// Hello tom! I'm jerry

 

함수로부터 여러 개의 결과 반환
- 함수는 여러 결과 값들을 튜플로 감싸서 return이 가능.
- 인치 단위의 수를 매개변수로 받아 야드, 센티미터, 미터로 변환하고 이 세 개의 값을 하나의 튜플에 넣어 반환.

func sizeConverter(length: Float) -> (yards: Float, centimeters: Float, meters: Float) {
  let yards = length * 0.0277778
  let centimeters = length * 2.54
  let meters = length * 0.0254
  return (yards, centimeters, meters)
}

var lengthTuple = sizeConverter(length: 20)
print(lengthTuple.yards)
print(lengthTuple.centimeters)
print(lengthTuple.meters)

'iOS > SwiftUI' 카테고리의 다른 글

[Swift] swift 클로저  (0) 2022.01.03
[Swift]열거형(enum)/rawValue  (0) 2022.01.03
[Swift] swift 구조체/클래스  (0) 2022.01.03
[Swift] swift 조건문/반복문  (0) 2022.01.03
[Swift] swift 자료형  (0) 2022.01.03
Comments