DongSup
dev's gait
DongSup
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • flask (13)
    • iOS (11)
    • python (22)
    • CS (21)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • Swift
  • 첫글
  • 언어공부
  • 한걸음

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DongSup

dev's gait

Swift 문법 (guard / switch-case / 함수)
iOS

Swift 문법 (guard / switch-case / 함수)

2021. 9. 28. 13:30

guard~let 활용

 

var x = 1

while true{

    guard x < 5 else { break }

    print(x, terminator: " ")

    x = x + 1

}

//1 2 3 4

◼ guard는 return, break, continue, throw 등 제어문 전환 키워드를 쓸 수 있는 상황이라면 사용이 가능

◼ 함수 뿐 아니라 반복문 등 특정 블록 내부에 있으면 사용 가능

 

if~let
func printName(firstName:String, lastName:String?){

if let lName = lastName {

print(lName, firstName)

}

else{

print("성이 없어요")

}

}

printName(firstName: "동섭", lastName:"안")

printName(firstName: "동섭", lastName:nil)

//안 동섭

//성이 없어요

 

guard~let

func printName(firstName:String, lastName:String?){

guard let lName = lastName else{

print("성이 없어요")

return

}

print(lName,firstName)

}

printName(firstName: "동섭", lastName:"안")

printName(firstName: "동섭", lastName:nil)

//안 동섭

//성이 없어요

◼ 언래핑된 number 변수를 guard문 밖에 있는 코드가 사용할 수 있다

 

switch-case문 결합

 

let anotherCharacter: Character = "a"

switch anotherCharacter {

case "A", "a":

print("The letter A")

default:

print("Not the letter A")

}

//The letter A

 

범위 지정 매칭

let weight = 70.0

let height = 172.0

let bmi = weight / (height*height*0.0001)

var body = ""

switch bmi {

case 40... where bmi / 1.0 > 40.0:

body = "3단계 비만"

print("정상작동")

case 30...40 where bmi / 1.0 > 30.0:

body = "2단계 비만"

print("정상작동")

case 25...30 where bmi / 1.0 > 25.0:

body = "1단계 비만"

print("정상작동")

case 18.5...25 where bmi / 1.0 > 18.5:

body = "정상"

print("정상작동")

default:

body = "저체중"

}

print("BMI:\(bmi), 판정:\(body)")

//정상작동

//BMI:23.66143861546782, 판정:정상

◼ where절을 switch case에 부가적인 조건을 추가

 

var numbers: [Int] = [1, 2, 3, 4, 5]

for num in numbers where num > 2 {

print(num)

}

//3

//4

//5

◼ switch, catch, while, guard, for 등에서 사용 가능

 

fallthrough

var value = 4

switch (value)

{

case 4:

print("4")

fallthrough

case 3:

print("3")

fallthrough

case 2:

print("2")

//fallthrough

default:

print("1")

}

//4

//3

//2

◼ 다음에 break 문을 포함할 필요가 없음                                 

◼ 일치하는 case문을 만나면 자동으로 빠져나옴

 

 

내부 매개변수이름과 외부 매개변수이름

 

func add(x: Int, y: Int) -> Int {

print(#function)

return(x+y)

}

print(add(x:10, y:20))

print(type(of:add))

func add(first x: Int, second y: Int) -> Int {

//외부 내부:자료형,외부 내부:자료형 -> 리턴형

print(#function)

return(x+y) //함수 정의할 때는 내부 매개변수명을 사용

} //return(first+second)은 오류

print(add(first:10, second:20))//add(x:10, y:20)은 오류

//함수 호출할 때는 외부 매개변수명을 사용

func add(_ x: Int, _ y: Int) -> Int {

print(#function)

return(x+y)

}

print(add(10, 20))

func add(_ x: Int, with y: Int) -> Int {

print(#function)

return(x+y)

}

print(add(10, with:20))

//add(x:y:)

//30

//(Int, Int) -> Int

//add(first:second:)

//30

//add(_:_:)

//30

//add(_:with:)

//30

 

c/c++함수 -> Swift함수

func ddd(x: Int) -> Int{

return(x*2)

}

print(ddd(x:10))

func setX(x: Int) -> Int {

let xx = x

return(xx)

}

var xx = setX(x:70)

print(xx)

func getX(_ x: Int) -> Int {

return(x)

}

print(getX(10))

func add(x: Int, y: Int) -> Int{

return(x+y)

}

print(add(x:10, y:20))

func setXY(x: Int, y: Int) -> (xx: Int, yy: Int) {

let xx = x

let yy = y

return(xx, yy)

}

var xx2 = setXY(x:10,y:20)

print(xx2)

//20

//70

//10

//30

//(xx: 10, yy: 20)

 

함수명과 함수자료형

 

함수명 : changeDatePicker(_ :)

함수자료형 : UIDatePicker

 

함수명 : pickerView(_ :) , rowHeightForComponent :)

함수자료형 : UIPickerView , Int , CGFloat

 

함수명 : pickerView(_ :) , viewForRow : , forComponent : , reusing :)

함수자료형 : UIPickerView , Int , Int , UIView , UIView

 

함수명 : numberOfComponents(in :) , pickerView(_ :) , nuberOfRowsInComponent :)

함수자료형 : UIPickerView , Int , UIPickerView , Int , Int

 

함수명 : PickerView(_ :) , didSelectRow(_ :) , inComponent :)

함수자료형 : UIPickerView , Int , Int

 

디폴트 매개변수 정의

 

func sayHello(count: Int, name: String = "길동") -> String {

return ("\(name), 너의 번호는 \(count)")

}

var message = sayHello(count:100)

print(message)

var message1 = sayHello(count:10, name: "소프트")

print(message1)

//길동, 너의 번호는 100

//소프트, 너의 번호는 10

◼ argument로 전달하는 값이 없는 경우, 디폴트 매개변수 값을 사용

◼ 선언할 때 매개변수에 디폴트 값을 할당

◼ 이름을 전달하지 않고도 호출 가능 함수를

 

func add(x: Double, y: Double, z: Double) -> (xx: Double, yy: Double, zz: Double) {

let xx = x * 1.2

let yy = y * 2.4

let zz = z * 3.6

return (xx, yy, zz)

}

var result = add(x:5,y:10,z:20)

print(result)

print(result.xx)

print(result.yy)

print(result.zz)

//(xx: 6.0, yy: 24.0, zz: 72.0)

//6.0

//24.0

//72.0

◼ 함수로부터 여러 개의 결과 반환

◼ 함수는 여러 결과 값들을 튜플로 감싸서 반환할 수 있음

 

import Foundation

func sss(x : Int, y : Int) -> (sum : Int, sub : Int, mul : Int , div : Double, rem : Int)

{

let sum = x+y

let sub = x-y

let mul = x*y

let div = Double(x)/Double(y) //같은 자료형만 연산 가능

let rem = x%y

return (sum, sub, mul, div, rem)

}

var result = sss(x:10,y:3)

print(type(of:sss))

print(result.sum)

print(result.sub)

print(result.mul)

print(result.div)

print(result.rem)

print(String(format: "%.3f", result.div))

//(Int, Int) -> (sum: Int, sub: Int, mul: Int, div: Double, rem: Int)

//13

//7

//30

//3.3333333333333335

//1

//3.333

◼ 2개의 정수를 입력받아 가감제 리턴

 

가변 매개변수


func add(numbers:Int...){

var sum:Int = 0

for num in numbers where num > 2 {

sum += num

}

print(sum)

}

add(numbers:1,2,3,4,5,6)

//18

◼ 함수가 가변 매개변수를 받는다는 것을 가리키기 위해서 세 개의 점(…)을 사용

◼ 지정되지 않은 개수의 String 값을 매개변수로 받아서 콘솔에 출력

 

inout매개변수

 

var myValue = 10

func doubleValue (value: inout Int) -> Int {

value += value

return(value)

}

print(myValue)

print(doubleValue(value : &myValue)) //출력 값? 레포트

print(myValue)

//10

//20

//20

◼ call by reference하고 싶은 매개변수의 자료형 앞에 inout 씀

◼ call by reference하고 싶은 변수에 &붙여서 호출

'iOS' 카테고리의 다른 글

Swift 문법 (extension / 접근 제어 / protocol / enum)  (0) 2021.10.19
Swift 문법 (클래스/ 클래스 상속)  (0) 2021.10.12
Swift 문법 (1급 객체 / 1급 시민 / 글로저 / 클래스 기초)  (0) 2021.10.05
옵셔널(optional) / 연산자(operator) / 제어문  (0) 2021.09.21
Swift  (0) 2021.09.14
    'iOS' 카테고리의 다른 글
    • Swift 문법 (클래스/ 클래스 상속)
    • Swift 문법 (1급 객체 / 1급 시민 / 글로저 / 클래스 기초)
    • 옵셔널(optional) / 연산자(operator) / 제어문
    • Swift
    DongSup
    DongSup

    티스토리툴바