case문
var value = 0
switch (value)
{
case 0: print("영")
case 1: print("일")
case 2: print("이")
case 3: print("삼")
default: print("4이상")
}
//break문이 내부에 포함되어 있음, 굳이 안써도 됨
//case문을 계속 실행하려면 fallthrough문 사용
var value = 4
switch (value)
{
case 4:
print("4")
fallthrough
case 3:
print("3")
fallthrough
case 2:
print("2")
fallthrough
default:
print("1")
}
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)")
//BMI:20.761245674740483, 판정:정상
switch case에서의 where절 활용
부가적인 조건을 더함
var temperature = 60
switch (temperature)
{
case 0...49 where temperature % 2 == 0:
print("Cold and even")
case 50...79 where temperature % 2 == 0:
print("Warm and even")
case 80...110 where temperature % 2 == 0:
print("Hot and even")
default:
print("Temperature out of range or odd")
}
추가예제 for in
let numbers = [1, 2, 3, 4, 5, 6]
// 짝수만 출력
for number in numbers where number % 2 == 0 {
print("\(number)는 짝수입니다.")
}
c함수를 swift언어로
void sayHello() { //C언어
printf("Hello");
}
func sayHello() -> Void{// 자료형은 대문자로
//return값이 없는 함수는 -> Void생략해도 무방
print("leeeeeee")
}
sayHello() //호출
int add(int x, int y) { //C
return(x+y);
}
add(10,20);
************************************************************
***********************************
**************************************************
//시험 빈출
func add(x: Int, y: Int) -> Int {//x = parameter
return(x+y)
}
add(x: 10, y: 20)//x = argument lable, 10 = argument
//----------------------------------------------------
질문 : 위 함수의 자료형은?
답 : (Int, Int) -> (Int)
형식으로 표현
void sayHello() { //C언어
printf("Hello");
}
void함수의 경우 빈 튜플 형식이므로(리턴값이 없는 경우)
함수의 자료형은
답 : ()->()
이라고 나타낼 수 있다.
******************************************************************************************
// 1번째 방법 : 기본
func add(x: Int, y: Int) -> Int {
return(x+y)
}
print(add(x:10, y:20))
// 2번째 방법 : 외부/내부 매개변수명 선언
func add(first x: Int, second y: Int) -> Int {
return (x+y)
}
print(add(first:10, second:20))
// 3번째 방법
// _ : 외부매개변수명 생략
// 다른 언어처럼 호출 가능은 하나, 추천은 안 함
func add(_ x: Int, _ y: Int) -> Int {
return (x+y)
}
print(add(10,20))
// 4번째 방법 : 외부매개변수명만 생략
// 2, 3번 혼합한 방법
// apple사가 자주 하는 방법
func add(_ x: Int, with y: Int) -> Int {
return (x+y)
}
print(add(10, with:20))
Swift 함수에서 매개변수 이름의 구분
- 내부 매개변수명 (parameter name): 함수 내부에서 값에 접근할 때 사용.
- 외부 매개변수명 (argument label): 함수를 호출할 때 인자를 구분하기 위해 사용.
1️⃣ 외부 매개변수명을 생략한 경우
- x, y가 내부 매개변수명 = 외부 매개변수명 역할을 동시에 수행.
- 호출할 때 반드시 x:, y:를 붙여야 함.
2️⃣ 외부와 내부 매개변수명을 구분한 경우
- first, second → 외부 매개변수명 (호출 시 사용).
- x, y → 내부 매개변수명 (함수 내부에서 사용).
- 함수 선언 시 외부명 내부명: 타입 형태로 지정.
3️⃣ 외부 매개변수명을 _로 생략한 경우
- _를 사용하면 외부 매개변수명을 쓰지 않아도 됨.
- 호출할 때 단순히 순서대로 값만 넘기면 됨.
- 다른 언어(C, Java 등)처럼 직관적으로 호출할 수 있음.
4️⃣ 첫 번째 매개변수만 _로 생략한 경우
- 첫 번째 인자는 외부명을 생략 (_) 가능.
- 두 번째부터는 외부명을 붙여 호출해야 함.
- Swift에서 자주 쓰이는 패턴 (특히 Objective-C API 스타일).
---#function 리터럴,
: 의 갯수가 매개변수의 갯수
func add(x: Int, y: Int) -> Int {
print(#function) //add(x:y:)
return (x + y)
}
print(add(x: 10, y: 20))
func add(first x: Int, second y: Int) -> Int {
print(#function) //add(first:second:)
return (x + y)
}
print(add(first: 10, second: 20))
func add(_ x: Int, _ y: Int) -> Int {
print(#function)//add(_:_:)
return (x + y)
}
print(add(10, 20))
func add(_ x: Int, with y: Int) -> Int {
print(#function)//add_:with:
return (x + y)
}
print(add(10, y: 20))
함수의 타입은 같고 함수명은 모두 다름
tableView(_:numberOfRowsInSection:) | Apple Developer Documentation
Tells the data source to return the number of rows in a given section of a table view.
developer.apple.com
//함수명 : tableView(_:numberOfRowslnSection:)
func tableView(
_ tableView: UITableView,
numberOfRowsInSection section: Int
) -> Int
//함수의 자료형 : (UITableView, Int) -> Int
iOS 테이블뷰에서 많이 사용하는 메서드를 많이 사용하는 순서대로 나열하고 예를 들어 기능을 설명하고,
전체 메서드 이름과 메서드 자료형을 알려줘

guard문
var x = 1
while true {
guard x < 5 else { break }//조건(x<5)이 거짓일 때 실행(break)
print(x) //1 2 3 4, 조건(x<5)이 참일 때 실행
x=x+1
}
func multiplyByTen(value: Int?) {
guard let number = value else {//조건식이 거짓(nil)일 때 else 블록 실행
print("nil")
return
}
print(number*10) //조건식이 참일 때 실행, 주의 : number를 guard문 밖인 여기서도 사용 가능
}
multiplyByTen(value: 3) //30
multiplyByTen(value: nil)
multiplyByTen(value: 10)
//언래핑된 number 변수를 guard문 밖에 있는 코드가 사용할 수 있다!!
//if문을 이용하는 언래핑된 변수는 그렇게 못함
func printName1(firstName:String, lastName:String?){
// if let
if let lName = lastName { // lastName이 nil이 아니면
print(lName,firstName)
}
else {
print("성이 없네요!")
}
//-------------------------------------
func printName2(firstName:String, lastName:String?){
// guard let
guard let lName = lastName else { // lastName이 nil이면, guard문은 else가 필수
print("성이 없네요!")
return // early exit
}
print(lName,firstName)
}
printName1(firstName: "길동", lastName:"홍")
printName2(firstName: "길동", lastName:nil)
argument로 전달하는 값이 없는 경우, 디폴트 매개변수 값을 사용
함수를 선언할 때 매개변수에 디폴트 값을 할당
name이 아규먼트로 전달되지 않을 경우에 디폴트로 "길동"으로 사용 func sayHello(count: Int, name: String = "길동") -> String {
return ("\(name), 너의 번호는 \(count)") }
name에 값을 가지고 함수를 호출하면 해당 값을 사용 var message = sayHello(count:10, name: "소프트") //소프트, 너의 번호는 10
name에 값을 전달하지 않으면 디폴트로 "길동"을 사용 var message = sayHello(count:100)
print(message) //길동, 너의 번호는 100
함수로부터 여러 개의 결과 반환하기
import Foundation
func sss(x : Int, y : Int) -> (sum : Int, sub : Int, div : Double)
{
let sum = x+y
let sub = x-y
let div = Double(x)/Double(y) //같은 자료형만 연산 가능 return (sum, sub, div)
print(#function)
} //2개의 정수를 입력받아 가감제 리턴
var result = sss(x:10,y:3)
String(format: "%.3d", result.div)
print(result.sum)
print(result.sub)
print(result.div)
print(type(of: sss))
print(String(format: "%.3f", result.div) )
'computing' 카테고리의 다른 글
20250929_iOS5 (0) | 2025.09.29 |
---|---|
20250925_android4 (0) | 2025.09.25 |
20250918_android3 (0) | 2025.09.18 |
20250916_네트워크보안_3 (1) | 2025.09.16 |
20250915_iOS_3 (0) | 2025.09.15 |