처음부터 차근차근
Swift 문법 복습2 본문
반응형
for i in 1..<10 {
if i > 5 { // 중요!! 에러 수정 과제: if 다음에는 반드시 괄호가 필요하다
break
}
print(i)
}
//결과
//1
//2
//3
//4
//5
func printName (firstName:String, lastName:String?){
// if let
if let lName = lastName { // lastName이 nil이 아니면
print(lName,firstName)
}else {
print("성이 없네요!")
}
// guard let
guard let lName = lastName else { // lastName이 nil이면
print("성이 없네요!")
return // early exit
}
print(lName ,firstName)
}
printName(firstName:"길동", lastName:"홍")
printName(firstName:"길동", lastName:nil)
//결과
//홍 길동
//홍 길동
//성이 없네요!
//성이 없네요!
// if let과 guard let의 차이점
// if let은 참일 때(nil이 아닐 때) 실행
// guard let은 거짓일 때(nil 일 때) 실행
let anotherCharacter: Character = "a"
switch anotherCharacter {
case "a": // 아래에 내용 안쓰면 오류남
case "A":
print("The letter A")
default:
print("Not the letter A")
}
과제 : switch-case문으로 변경하기
let weight = 60.0
let height = 170.0
let bmi = weight / (height*height*0.0001) // kg/m*m
var body = ""
switch bmi {
case 40... :
body = "3단계 비만"
case 30..<40 :
body = "2단계 비만"
case 25..<30 :
body = "1단계 비만"
case 18.5..<25 :
body = "정상"
default :
body = "저체중"
}
print("BMI:\(bmi), 판정:\(body)")
//결과
//BMI:20.761245674740483, 판정:정상
var numbers: [Int] = [1, 2, 3, 4, 5]
for num in numbers where num > 3 {
print(num)
}
//결과
// 4
//5
func sayHello() { //->Void 생략
print("Hello")
} //정의
sayHello() // 호출
//결과
// Hello
// add 함수 변경하기
func add(x: Int, y: Int) -> Int {
return(x+y)
}
add(x:10, y:20)
print(type(of:add)) // 과제 : add함수의 자료형은? (Int, Int) -> Int
// 결과
// (Int, Int) -> Int
func min(a:Int, b:Int) -> Int {
return (a - b)
}
print(min(a:100, b:10))
func min(num1 a:Int, num2 b:Int) -> Int {
return (a - b)
}
print(min(num1:100, num2:10))
func min(_ a:Int, _ b:Int) -> Int {
return (a - b)
}
print(min(100, 10))
func min(_ a:Int, num b:Int) -> Int {
return (a - b)
}
print(min(100, num:10))
//결과
// 90
//90
//90
//90
Swift 함수 실습과 함수의 type은? (과제:매우 중요)
과제 : 4가지 add함수의 함수명
func min(a:Int, b:Int) -> Int {
print(#function)
return (a - b)
}
print(min(a:100, b:10))
print(type(of:min))
func min(num1 a:Int, num2 b:Int) -> Int {
print(#function)
return (a - b)
}
print(min(num1:100, num2:10))
func min(_ a:Int, _ b:Int) -> Int {
print(#function)
return (a - b)
}
print(min(100, 10))
func min(_ a:Int, num b:Int) -> Int {
print(#function)
return (a - b)
}
print(min(100, num:10))
//결과
// min(a:b:)
//90
//(Int, Int) -> Int
//min(num1:num2:)
//90
//min(_:_:)
//90
//min(_:num:)
//90
import Foundation
let weight = 60.0
let height = 170.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("BMI:\(shortenedBmi), 판정:\(body)")
//결과
//BMI:20.8, 판정:정상
import Foundation
func calcBMI(weight : Double, height : Double) -> String{
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 = "저체중"
}
return "BMI:\(shortenedBmi), 판정:\(body)"
}
print(calcBMI(weight:60.0, height: 170.0)) //”BMI:20.8, 판정:정상” 이 출력됨
//결과
// BMI:20.8, 판정:정상
과제: swift print format으로 구글링하여 소수점 3자리에서 반올림
과제 : 가감승제,나머지까지 나오도록 소스 수정
과제 : 이 함수의 자료형은? (Int, Int) -> (sum: Int, sub: Int, div: Double, mul: Int, rem: Int)
import Foundation
func sss(x : Int, y : Int) -> (sum : Int, sub : Int, div : Double, mul : Int, rem : Int)
{
let sum = x + y
let sub = x - y
let div = Double(x) / Double(y)
let mul = x * y
let rem = x % y
return (sum, sub, div, mul, rem)
}
var result = sss(x:10,y:3)
print(result.sum)
print(result.sub)
print(String(format: "%.3f", result.div))
print(result.mul)
print(result.rem)
print(type(of:sss))
//결과
//13
//7
//3.333
//30
//1
//(Int, Int) -> (sum: Int, sub: Int, div: Double, mul: Int, rem: Int)
과제: 임의의 개수의 정수 값의 합을 출력하는 함수를 작성하여 호출해보시오.
func sumNumbers(numbers: Int...)
{
var sum = 0
for number in numbers {
sum += number
}
print("합은 \(sum)")
}
sumNumbers(numbers: 10, 200, 300, 20)
sumNumbers(numbers: 1, 2)
//결과
//합은 530
//합은 3
func up(num: Int) -> Int {
return num + 10
}
func down(num: Int) -> Int {
return num - 10
}
let toUp = up
print(up(num:10))
print(toUp(10)) // 결과가 같음
let toDown = down
func upDown(Fun: (Int) -> Int, value: Int) {
let result = Fun(value)
print("결과 = \(result)")
}
upDown(Fun:toUp, value: 10) //toUp(10)
upDown(Fun:toDown, value: 10) //toDown(10)
func decideFun(x: Bool) -> (Int) -> Int {
//매개변수형 리턴형이 함수형
if x {
return toUp
} else {
return toDown
}
}
let temp = decideFun(x:false)
print(type(of:temp)) //(Int) -> Int
print(temp(10)) // == toDown(10)
//결과
//20
//20
//결과 = 20
//결과 = 0
//(Int) -> Int
//0
func add(x: Int, y: Int) -> Int {
return(x+y)
}
print(add(x:10, y:20))
let add1 = { (x: Int, y: Int) -> Int in
return(x+y)
}
print(add1(10, 20)) // 매개변수명 없어야 함
print(add1(10, 20)) //OK
print(type(of:add1)) //과제 : (Int, Int) -> Int
// 결과
//30
//30
//30
//(Int, Int) -> Int
let multiply = {(val1: Int, val2: Int) -> Int in
return val1 * val2
}
var result = multiply(10, 20)
print(result)
//결과
//200
let multiply = {(val1: Int, val2: Int) -> Int in
return val1 * val2
}
var result = multiply(10, 20)
print(result)
let add = {(val1: Int, val2: Int) -> Int in
return val1 + val2
}
result = add(10, 20)
print(result)
func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {
return cal(x, y)
}
result = math(x: 10, y: 20, cal: add)
print(result)
result = math(x: 10, y: 20, cal: multiply)
print(result)
result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) -> Int in
return val1 + val2
}) //클로저 소스를 매개변수에 직접 작성
print(result)
result = math(x: 10, y: 20) {(val1: Int, val2: Int) -> Int in
return val1 + val2
}//trailing closure
print(result)
//결과
// 200
//30
//30
//200
//30
//30
func math(x: Int, y: Int, cal: (Int, Int) -> Int) -> Int {
return cal(x, y)
}
var result = math(x: 10, y: 20, cal: {(val1: Int, val2: Int) in
return val1 + val2
}) //리턴형 생략
print(result)
result = math(x: 10, y: 20) {(val1: Int, val2: Int) in
return val1 + val2
} //trailing closure, 리턴형 생략
print(result)
result = math(x: 10, y: 20, cal: {
return $0 + $1
}) //매개변수 생략하고 단축인자(shorthand argument name)사용
print(result)
result = math(x: 10, y: 20) {
return $0 + $1
} //trailing closure, 매개변수 생략하고 단축인자사용
print(result)
result = math(x: 10, y: 20, cal: {
$0 + $1
}) //클로저에 리턴값이 있으면 마지막 줄을 리턴하므로 return생략
print(result)
result = math(x: 10, y: 20) { $0 + $1 } //return 생략
print(result)
//결과
// 30
//30
//30
//30
//30
//30
class Man{
static var age : Int = 10 // 타입 프로퍼티
var age : Int = 22
var weight : Double = 50.5
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
static func sayHi(){ // 타입 메서드
print("hi")
}
}
var kim : Man = Man()
kim.display()
print(kim.age)
print(Man.age)
Man.sayHi()
//결과
// 나이=22, 몸무게=50.5
//22
//10
//hi
함수명
tableView(_:numberOfRowsInSection:)
tableView(_:cellForRowAt:)
application(_:didFinishLaunchingWithOptions:)
application(_:configurationForConnecting:options:)
application(_:didDiscardSceneSessions:)
출처 : iOS프로그래밍실무(22-1학기)한성현교수 강의 내용 변형 및 요약
반응형
'프로그래밍 > Swift' 카테고리의 다른 글
Swift 문법 복습4 (0) | 2022.03.29 |
---|---|
Swift 문법 복습3 (1) | 2022.03.26 |
Swift 문법 복습1, json 정리 사이트 (0) | 2022.03.17 |
강의 내용 정리 (0) | 2021.11.29 |
12주차 정리 (0) | 2021.11.22 |
Comments