안선생의 개발 블로그
Swift문법 본문
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 |