Swift - Daily Study
Today Study
- Double type과 Int type을 연산하려 시도하던 중 Error
- 그래서 여러 시도를 해본 결과 Swift에서는 Type을 중요시 여겨 같은 type이 아니면 연산을 할 수 없다는 것을 알게되었다
- 만약 다른 Type끼리의 연산을 하고 싶다면 형변환을 통해 형태(type)를 맞춰 준 뒤 결과를 도출해 내면 된다
var a: Double = 10.0
var b: Int = 2
a/Double(b)
10.0/2
//a + b
var printType = a + Double(b)
type(of:printType)
var typeConverter = Int(printType)
type(of:typeConverter)
- 딕셔너리의 값을 받아 더블 타입의 결과값으로 나타내는 함수
let scores = ["kor": 92,"eng": 88, "math": 96, "science": 89]
var getKorScore = scores["kor"]
var getEngScore = scores["eng"]
var getMathScore = scores["math"]
var getScienceScore = scores["science"]
var avgOfScores: Double = 0.0
func avg(param1: Int?, param2: Int?, param3: Int?, param4: Int?) {
if let convertParam1 = param1,
let convertParam2 = param2,
let convertParam3 = param3,
let convertParam4 = param4 {
avgOfScores = Double((convertParam1 + convertParam2 + convertParam3 + convertParam4)/4)
}
print(avgOfScores)
type(of:avgOfScores)
}
avg(param1: getKorScore, param2: getEngScore, param3: getMathScore, param4: getScienceScore)
let test: Double = (92.0 + 88.0 + 96.0 + 89.0) / 4
type(of: test)
let test2: Int = (92 + 88 + 96 + 89) / 4
type(of:test2)
- 함수를 만들면서 배운점
- 딕셔너리의 value를 key를 통해 가져오게 되면 Optional type으로 반환된다는 점
- Optional Binding을 통해 Optional Int 값을 Int 형으로 바꾼 후 그 Int 값을 모두 더해 평균 값을 만들때 Double Type으로 바꾸려면 Double 형변환 형식을 사용하여 ( )로 묶어주면 된다는 점
- Optional Binding을 해야될 값들이 많으면 한번에 쉼표( , )를 이용하여 Optional Binding이 가능하다는 점
- Optional Binding 구조 중 하나인 if ~ let 형식 안에 Optional Binding을 한 값들의 연산 및 여러 기능이 구현 가능하다는 점
- Int 타입을 모두 더 해 4로 나눈 값과 Double 타입을 모두 더 해 4로 나눈 값의 결과값이 다르다는 점
- 함수를 사용하지 않고 소수점까지 나오는 평균 값 구하는 방법
let scoresOfTest = ["kor": 92,"eng": 88, "math": 96, "science": 89]
var sum = 0
var average: Double = 0
for i in scoresOfTest.values {
sum += i
average = Double(sum)/Double(scoresOfTest.values.count)
}
print(average)
- 위의 for 문을 만들면서 배운점
- .values는 Dictionary의 Value들만 뽑아온다
- .values로 가져오면 타입이 Dictionary에 맞는 Value 타입으로 가져온다
- ex)
let example: [String:Int] = ["A": 3, "B": 4] var test = exampleDic.value -> 3,4 type(of: test) -> Dictionary<String,Int>.Values.Type
- .values로 가져오면 타입이 Dictionary에 맞는 Value 타입으로 가져온다
- .values는 Dictionary의 Value들만 뽑아온다
- .count는 값들의 갯수를 세어 나타낸다 (Int Type로 나타낸다)