정말 변수명이나 입력값만 맘대로 바꾸고, 그 구조틀 자체는 크게 바꾸지 않았는데도 자꾸 에러가 났다ㅠㅠ 왜때문에ㅠㅠ
// HundredOrLess 구조체는 래핑하는 값이 100과 같거나 더 작은 숫자가 포함됨 // 더 큰 숫자를 저장할 경우, 100이 저장됨
@propertyWrapper // 이거를 첫머리에 써줘야 함. 안썼더니 프로퍼티 래퍼라고 인식을 못해
struct HundredOrLess { private var stillYoung = 0 var wrappedValue: Int { get { return stillYoung } set { stillYoung = min(newValue, 100) } } }
// set구문은 새로운값인 newValue가 100보다 작거나 같은 값인지 확인함 // get구문은 newValue에 저장된 값을 반환함
// stillYoung 선언부는 HundredOrLess의 구현에서만 stillYoung이 사용될 수 있도록 private 변수를 표기 // 그래서 다른 곳에서 작성된 코드는 wrappedVlue를 위한 get, set을 사용해서 값에 접근하거나 직접적으로 stillYoung 을 사용할 수 없음
// 아래는 항상 100이하인지 확인하기 위해 HundredOrLess 프로퍼티 래퍼를 사용하여 그룹나이를 저장하는 구조체 // 여기서는 속성으로 프로퍼티 전에 래퍼의 이름인 @HundredOrLess을 언급하여 프로퍼티 래퍼에 적용시킴
struct GroupAge { @HundredOrLess var you: Int @HundredOrLess var me: Int }
var weareyoung = GroupAge() print(weareyoung.you) // 0 (playground에서 이때 자꾸 위 문구와 함께 에러가 났었다. command 창에서는 문제없이 돌아감.) weareyoung.you = 88 print(weareyoung.you) // 88
weareyoung.me = 120 print(weareyoung.me) // 100
구글링해보니 2020년도에 누군가가 똑같은 사이트의, 똑같은 예시로, 똑같은 에러가 나서 글을 올려둔게 있어 참고하였다. [2]
그덕분에 이부분이 playground에서만 보이는 swift자체 버그로 추정되며, 이럴 때는 swift commmand창에서 돌려보면 추가 확인이 가능한 것을 알았다.
※ 아래 사진은 swift 커멘드창 들어가는 곳 : macOS > Command Line Tool