대체로 사용하는 프로그래밍 언어에서 arguments와 parameters가 무엇인지?
Parameters (매개변수)
Parameters는 함수를 정의할 때 사용되는 변수입니다. 함수가 받아들일 수 있는 입력값의 이름을 지정합니다.
예시:
def greet(name, age):
print(f"Hello, {name}! You are {age} years old.")
이 예시에서 `name`과 `age`가 parameters이다.
Arguments (인수)
Arguments는 함수를 호출할 때 실제로 전달되는 값입니다. 이 값들이 함수의 parameters에 할당됩니다.
예시:
greet("Alice", 30)
여기서 "Alice"와 30이 arguments입니다.
다른 예시
JavaScript를 사용한 또 다른 예시를 살펴보겠습니다:
function add(a, b) {
return a + b;
}
let result = add(5, 3);
console.log(result); // 출력: 8
이 경우:
- `a`와 `b`는 parameters.
- `5`와 `3`은 arguments.
함수를 선언하는 방법
func sayhello() -> Void {
print("Hi")
}
sayhello()
// 리턴값이 없는 함수들은 -> Void 부분 생략 가능
Swift에서 함수를 만들고 사용하는 방법
함수 정의
Swift에서 함수는 `func` 키워드를 사용하여 정의합니다. 기본적인 함수 구조는 다음과 같습니다:
func 함수이름(매개변수...) -> 반환타입 {
// 함수 본문
return 반환값
}
예시:
func greet(name: String) -> String {
return "안녕하세요, \(name)님!"
}
이 함수는 `name`이라는 매개변수를 받아 인사말을 반환합니다[1].
함수 호출
정의된 함수를 호출할 때는 함수 이름과 필요한 인자를 전달합니다:
let message = greet(name: "홍길동")
print(message) // 출력: 안녕하세요, 홍길동님!
매개변수 레이블
Swift에서는 매개변수에 외부 이름(Argument Label)과 내부 이름(Parameter Name)을 별도로 지정할 수 있습니다[2]:
func sayHello(to name: String, age: Int) {
print("안녕하세요, \(name)님! 당신은 \(age)세입니다.")
}
sayHello(to: "김철수", age: 25)
여기서 `to`는 외부 이름(Argument Label)이고, `name`은 내부 이름(Parameter Name)입니다.
반환값이 없는 함수
함수가 값을 반환하지 않는 경우, 반환 타입을 생략하거나 `Void`를 사용할 수 있습니다:
func printHello() {
print("안녕하세요!")
}
printHello() // 출력: 안녕하세요!
다중 반환값
Swift에서는 튜플을 사용하여 여러 값을 반환할 수 있습니다:
func getNameAndAge() -> (name: String, age: Int) {
return ("홍길동", 30)
}
let person = getNameAndAge()
print("\(person.name)은 \(person.age)세입니다.")
가변 매개변수
함수가 여러 개의 동일한 타입의 인자를 받을 수 있도록 가변 매개변수를 사용할 수 있습니다[3]:
func sum(numbers: Int...) -> Int {
return numbers.reduce(0, +)
}
let total = sum(numbers: 1, 2, 3, 4, 5)
print("합계: \(total)") // 출력: 합계: 15
이렇게 Swift에서는 다양한 방식으로 함수를 정의하고 사용할 수 있습니다. 함수는 코드의 재사용성과 가독성을 높이는 중요한 요소입니다.
func add(x: Int, y: Int)->Int {
return(x+y)
}
print(add(x: 10, y: 20))
var x = add(x: 10, y: 20)
print(x)
print(type(of: add)) //함수의 자료형을 알려줌
함수명이 궁금할 때 사용하는 #function 리터럴(literal)
Argument의 이름에 따라 함수명 뒤에 다르게 붙는것을 알 수 있다.
Swift 함수명
- 함수명(외부매개변수명:외부매개변수명: ...)
- func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
return items.count
}- 해당 함수의 자료명 : (UITableView, Int) -> Int
- 해당 함수의 이름 : tableView(_:numberOfRowsInSection:)
guard문(조건식이 거짓이면 실행)
- 다음 사진의 3행과 4행의 의미는 같다.
guard~let의 활용
guard ~ let문과 if문의 차이
- guard문이 훨씬 더 간결하다.
- 언래핑된 number 변수를 guard문 밖에 있는 코드가 사용 가능, if문을 이용하여 언래핑된 변수는 그렇게 못함
디폴트 매개변수(default arguments)는 함수를 정의할 때 매개변수에 기본값을 지정하는 기능
파이썬과 자바스크립트에서 이를 구현하는 방법
파이썬에서의 디폴트 매개변수
파이썬에서는 함수 정의 시 매개변수 이름 뒤에 `=` 기호를 사용하여 기본값을 지정
def greet(name, greeting="안녕하세요"):
print(f"{greeting}, {name}님!")
# 기본값 사용
greet("홍길동") # 출력: 안녕하세요, 홍길동님!
# 기본값 오버라이드
greet("김철수", "반갑습니다") # 출력: 반갑습니다, 김철수님!
다른 예시:
def power(base, exponent=2):
return base ** exponent
print(power(3)) # 출력: 9 (3^2)
print(power(3, 3)) # 출력: 27 (3^3)
자바스크립트에서의 디폴트 매개변수
자바스크립트(ES6 이상)에서도 파이썬과 유사한 방식으로 디폴트 매개변수를 정의 가능
function greet(name, greeting = "안녕하세요") {
console.log(`${greeting}, ${name}님!`);
}
// 기본값 사용
greet("홍길동"); // 출력: 안녕하세요, 홍길동님!
// 기본값 오버라이드
greet("김철수", "반갑습니다"); // 출력: 반갑습니다, 김철수님!
다른 예시:
function calculateArea(width, height = 10) {
return width * height;
}
console.log(calculateArea(5)); // 출력: 50 (5 * 10)
console.log(calculateArea(5, 20)); // 출력: 100 (5 * 20)
Swift 3에서는 inout의 위치가 바뀜
var myValue = 10
func doubleValue (value: inout Int) -> Int {
value += value
return(value)
}
print(myValue)
print(doubleValue(value : &myValue)) //출력 값? 레포트
print(myValue)
다음 두개의 코드+사진은 같은내용이지만, 뒤의 사진은 Swift 문자열 서식(swift string format 자리수)을 추가한 것
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
var body = ""
if bmi >= 40 {
body = "3단계 비만"
} else if bmi >= 30 && bmi < 40 {
body = "2단계 비만"
} else if bmi >= 25 && bmi < 30 {
body = "1단계 비만"
} else if bmi >= 18.5 && bmi < 25 {
body = "정상"
} else {
body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
참고자료 : 한성현 교수님 수업자료 [Smile Han의 iOS프로그래밍기초]
'iOS프로그래밍 (2학년 2학기)' 카테고리의 다른 글
241009 iOS프로그래밍기초 6주차 (1) | 2024.10.14 |
---|---|
241002 iOS프로그래밍기초 5주차 (2) | 2024.10.14 |
240919 iOS 프로그래밍기초 3주차 (0) | 2024.09.19 |
240912 iOS프로그래밍기초 2주차 (0) | 2024.09.12 |
240905 iOS프로그래밍기초 1주차 (2) | 2024.09.05 |