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
        
  • .count는 값들의 갯수를 세어 나타낸다 (Int Type로 나타낸다)