iOS프로그래밍 (2학년 2학기)

240926 iOS프로그래밍기초 4주차

Z2AE 2024. 9. 26. 16:50

대체로 사용하는 프로그래밍 언어에서 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)) //함수의 자료형을 알려줌

 

 

Fix를 누르면, 해당 행이 print(add(10, 20)) 로 바뀐다.

함수명이 궁금할 때 사용하는 #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문을 이용하여 언래핑된 변수는 그렇게 못함

보라색으로 드래그되어있는 부분이 if문, 그 위 두 줄이 guard문

 

디폴트 매개변수(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프로그래밍기초]