computed property 예제2

권현석·2023년 2월 18일
0

Computed Property

목록 보기
6/6

1. 주어진 면적을 페인트칠 하려면 일정 넓이를 칠할 수 있는 페인트가 몇 통 필요한가?

import Foundation

var width: Float = 1.5
var height: Float = 2.3

var bucketOfPaint: Int {
	get {
    	let area = width * height // 3.45
    	let areaCoveredPerBucket: Float = 1.5
    	let numberOfBuckets = area / areaCoveredPerBucket // 2.3
    	let roundedBuckets = ceilf(numberOfBuckets) // 3
    	return Int(roundedBuckets)
    }
}

print(bucketOfPaint) // 3

페인트 통은 정수단위 이므로 ceilf를 사용해 소숫점 아래의 수를 올림한다. 그리고 Int()이니셜라이징으로 data type을 Int로 바꾸어준다.


2. 주어진 페인트 통의 수로 칠할 수 있는 면적은?

import Foundation

var width: Float = 1.5
var height: Float = 2.3

var bucketOfPaint: Int {
    get {
        let area = width * height // 3.45
        let areaCoveredPerBucket: Float = 1.5
        let numberOfBuckets = area / areaCoveredPerBucket // 2.3
        let roundedBuckets = ceilf(numberOfBuckets) // 3
        return Int(roundedBuckets)
    }
    set {
        let areaCanCover = Double(newValue) * 1.5
        print("This amount of paint can cover an area of \(areaCanCover)")
    }
}
 
bucketOfPaint = 4

setter 내부에서 newValue를 사용해 값을 구할 수 있다.

profile
wanna be an iOS developer

0개의 댓글