본문 바로가기
computing

20250922_iOS4

by greentworkshop 2025. 9. 22.

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️⃣ 외부 매개변수명을 생략한 경우

 
func add(x: Int, y: Int) -> Int {
return (x + y)
}
print(add(x: 10, y: 20)) // 호출 시 외부 매개변수명 필요
  • x, y가 내부 매개변수명 = 외부 매개변수명 역할을 동시에 수행.
  • 호출할 때 반드시 x:, y:를 붙여야 함.

2️⃣ 외부와 내부 매개변수명을 구분한 경우

 
func add(first x: Int, second y: Int) -> Int {
return (x + y)
}
print(add(first: 10, second: 20))
  • first, second → 외부 매개변수명 (호출 시 사용).
  • x, y → 내부 매개변수명 (함수 내부에서 사용).
  • 함수 선언 시 외부명 내부명: 타입 형태로 지정.

3️⃣ 외부 매개변수명을 _로 생략한 경우

 
func add(_ x: Int, _ y: Int) -> Int {
return (x + y)
}
print(add(10, 20)) // 외부 매개변수명 없이 바로 호출
  • _를 사용하면 외부 매개변수명을 쓰지 않아도 됨.
  • 호출할 때 단순히 순서대로 값만 넘기면 됨.
  • 다른 언어(C, Java 등)처럼 직관적으로 호출할 수 있음.

4️⃣ 첫 번째 매개변수만 _로 생략한 경우

 
func add(_ x: Int, y: Int) -> Int {
return (x + y)
}
print(add(10, y: 20))
  • 첫 번째 인자는 외부명을 생략 (_) 가능.
  • 두 번째부터는 외부명을 붙여 호출해야 함.
  • 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))

함수의 타입은 같고 함수명은 모두 다름

 

https://developer.apple.com/documentation/uikit/uitableviewdatasource/tableview(_:numberofrowsinsection:)

 

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