안선생의 개발 블로그

Swift문법 본문

Swift

Swift문법

안선생 2021. 10. 3. 18:15

let name = "안중현"

let weight = 68.0

let height = 178.0

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

let shortenedBmi = String(format: "%.1f", bmi)

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("\(name)님의 BMI:\(shortenedBmi), 판정:\(body)")

//안중현님의 BMI:21.5, 판정:정상

 

1급 객체(first class object) 1급 시민(first class citizen)

 

func inchesToFeet (inches: Float) -> Float {

return inches * 0.0833333

}

let toFeet = inchesToFeet

print(type(of:toFeet))

print(inchesToFeet(inches:10))

print(toFeet(11))

//(Float) -> Float

0.833333

0.91666627

 

func inchesToFeet (pi: Float) -> Float {

return pi * 3.14

}

let toFeet = inchesToFeet

func outputConversion(converterFunc: (Float) -> Float, value: Float) {//함수를 매개변수로 사용

let result = converterFunc(value)

print("Result = \(result)")

}

outputConversion(converterFunc:toFeet, value: 3)

//Result = 9.42

func mul(num: Int) -> Int {

return num * 2

}

func div(num: Int) -> Int {

return num / 2

}

let tomul = mul

print(mul(num:10)) //20

print(tomul(10)) //20

let todiv = div

func muldiv(Fun: (Int) -> Int, value: Int) {

let result = Fun(value)

print("결과 = \(result)") // 결과 = 20

// 결과 = 5

}

muldiv(Fun:tomul, value: 10) //tomul(20)

muldiv(Fun:todiv, value: 10) //todiv(5)

func decideFun(x: Bool) -> (Int) -> Int {

//매개변수형 리턴형이 함수형

if x {

return tomul

} else {

return todiv

}

}

let r = decideFun(x:false) // let r = toUp

print(type(of:r)) //(Int) -> Int

print(r(10)) // 5

 

클로저

let add1 = { (x: Int, y: Int) -> Int in

return(x+y)

}

 

print(add1(2, 12)) // 14

print(type(of:add1)) // (Int, Int) -> Int

 

let div={(val1: Int, val2: Int) -> Int in

return val1 / val2

}

let result = div(10,2)

print(result) // 5

let div = {(val1: Int, val2: Int) -> Int in

return val1 / val2

}

var result = div(10, 2)

print(result) // 5

let sub = {(val1: Int, val2: Int) -> Int in

return val1 + val2

}

result = sub(100, 20)

print(result) // 120

func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {

return cal(x, y)

}

result = math(x: 10, y: 20, cal: sub)

print(result) // 30

result = math(x: 100, y: 20, cal: div)

print(result) // 5

result = math(x: 25, y: 20, cal: {(val1: Int, val2: Int) -> Int in

return val1 - val2

}) //클로저 소스를 매개변수에 직접 작성

print(result) // 5

 

result = math(x: 100, y: 20, cal: {(val1: Int, val2: Int) in

return val1 - val2

}) //리턴형 생략

print(result) // 80

result = math(x: 100, y: 20) {(val1: Int, val2: Int) in

return val1 - val2

} //trailing closure, 리턴형 생략

print(result) //80

 

result = math(x: 101, y: 20, cal: {

return $0 + $1

}) //매개변수 생략하고 단축인자(shorthand argument name)사용

print(result) // 121

result = math(x: 101, y: 20) {

return $0 + $1

} //trailing closure, 매개변수 생략하고 단축인자사용

print(result) //121

 

result = math(x: 10, y: 20, cal: {

$0 * $1

}) //클로저에 리턴값이 있으면 마지막 줄을 리턴하므로 return생략

print(result) // 200

result = math(x: 10, y: 20) { $0 * $1 } //return 생략

print(result) //200

 

클래스

class Ahn{

var age : Int = 23

var weight : Double = 68.8

}

 

class Ahn{

var age : Int?

var weight : Double!

}

 

class Man{

var age : Int = 23

var weight : Double = 68.8

func d(){

print("나이는\(age)살이고 몸무게는\(weight)kg입니다.")

}

}

var Ahn : Man = Man()

print(Ahn.age) // 23

Ahn.d() // 나이는23살이고 몸무게는68.8kg입니다.

 

출처= 'iOS프로그래밍기초(21-2학기)한성현교수 강의 내용 변형 및 요약'

'Swift' 카테고리의 다른 글

간단한 iOS앱개발(2)  (0) 2021.11.16
간단한 iOS 앱 개발하기  (0) 2021.11.05
윈도우 맥 차이점  (0) 2021.11.01
Swift문법 3  (0) 2021.10.17
Swift 문법(2  (0) 2021.10.11