Switch에 맞춰서 쓴 소감. - 멘붕.
In Objective-C
Objective-C에서 완전 천성적인 것 같아요.
NS 정의ENUMtypedef NS_ENUM(NSInteger, DemoEnum) {
DemoEnumZero = 0,
DemoEnumOne = 1,
DemoEnumTwo = 2
};
환경은 table view와 관련된 데이터 소스나 delegate methods에서 사용되며 section index에 연결됩니다.
switch 탑재 시 사용NSInteger section = indexPath.section
switch (0) {
case DemoEnumZero:
NSLog(@"0");
break;
case DemoEnumOne:
NSLog(@"1");
break;
case DemoEnumTwo:
NSLog(@"2");
break;
default:
break;
}
만족스러워 보이는데,
그런데 스위프트 이후로 세상이 바뀌었어요.ω・`
In Swift
Swift에서 raw value 형태를 Int의 enum으로 정의합니다.enum DemoEnum: Int {
case Zero = 0
case One = 1
case Two = 2
}
enum형태가 Int일 때 첫 번째 값을 지정하면 뒤에 있는 값이 스스로 발송되기 때문에 필요하지 않은 사진 뒤에 있는 두 개의cases의rawvalues
만약 한 장의 사진을 사용한다면:let section:Int = indexPath.section
switch section {
case DemoEnum.Zero:
println("0")
break
default
break
}
바로 Xcode가 불평하는 것을 보았습니다.
Enum case pattern cannot match values of the non-enum type 'Int'
내 케이스의 형태는 비교할 형태와 다르기 때문에 내 편을 양보할 수 없다
끝까지 간호서류가 있으면 문제가 옆에 있다는 것을 알 수 있습니다. 꺼낸rawvalue를 비교해야 합니다. 즉, 사진을 찍어야 하는 모습입니다.case DemoEnum.Zero.rawValue:
이때 미간을 찌푸리며 이게 무슨 꿍꿍이수작이냐고 생각했는데 쓰려면 쓰게 되잖아...switch section {
case DemoEnum.Zero.rawValue:
println("0")
case DemoEnum.One.rawValue:
println("1")
case DemoEnum.Two.rawValue:
println("2")
default
}
사진이 완성되면 손을 멈추고 각 케이스 뒤에 적어야 합니다.너무 좋은 것 같아요.
사진, 사진 다 미워할 것 같아.
다음에rawvalue 가져오는 이벤트를method에서 분리합니다func fetchRaw(theEnum: DemoEnum) -> Int {
return theEnum.rawValue
}
원래의 switch-case는 이렇게 변할 수 있고, 적어도 비교적 쉽게 읽을 수 있다switch section {
case fetchRaw(.Zero):
println("0")
case fetchRaw(.One):
println("1")
case fetchRaw(.Two):
println("2")
default
}
만약 어떤 건의나 의문이 있으면, 아래에 댓글로'3'y'에 대해 토론하는 것을 환영합니다.
동시 출발: 2029
typedef NS_ENUM(NSInteger, DemoEnum) {
DemoEnumZero = 0,
DemoEnumOne = 1,
DemoEnumTwo = 2
};
NSInteger section = indexPath.section
switch (0) {
case DemoEnumZero:
NSLog(@"0");
break;
case DemoEnumOne:
NSLog(@"1");
break;
case DemoEnumTwo:
NSLog(@"2");
break;
default:
break;
}
Swift에서 raw value 형태를 Int의 enum으로 정의합니다.
enum DemoEnum: Int {
case Zero = 0
case One = 1
case Two = 2
}
enum형태가 Int일 때 첫 번째 값을 지정하면 뒤에 있는 값이 스스로 발송되기 때문에 필요하지 않은 사진 뒤에 있는 두 개의cases의rawvalues만약 한 장의 사진을 사용한다면:
let section:Int = indexPath.section
switch section {
case DemoEnum.Zero:
println("0")
break
default
break
}
바로 Xcode가 불평하는 것을 보았습니다.Enum case pattern cannot match values of the non-enum type 'Int'
내 케이스의 형태는 비교할 형태와 다르기 때문에 내 편을 양보할 수 없다
끝까지 간호서류가 있으면 문제가 옆에 있다는 것을 알 수 있습니다. 꺼낸rawvalue를 비교해야 합니다. 즉, 사진을 찍어야 하는 모습입니다.
case DemoEnum.Zero.rawValue:
이때 미간을 찌푸리며 이게 무슨 꿍꿍이수작이냐고 생각했는데 쓰려면 쓰게 되잖아...switch section {
case DemoEnum.Zero.rawValue:
println("0")
case DemoEnum.One.rawValue:
println("1")
case DemoEnum.Two.rawValue:
println("2")
default
}
사진이 완성되면 손을 멈추고 각 케이스 뒤에 적어야 합니다.너무 좋은 것 같아요.사진, 사진 다 미워할 것 같아.
다음에rawvalue 가져오는 이벤트를method에서 분리합니다
func fetchRaw(theEnum: DemoEnum) -> Int {
return theEnum.rawValue
}
원래의 switch-case는 이렇게 변할 수 있고, 적어도 비교적 쉽게 읽을 수 있다switch section {
case fetchRaw(.Zero):
println("0")
case fetchRaw(.One):
println("1")
case fetchRaw(.Two):
println("2")
default
}
만약 어떤 건의나 의문이 있으면, 아래에 댓글로'3'y'에 대해 토론하는 것을 환영합니다.동시 출발: 2029
Reference
이 문제에 관하여(Switch에 맞춰서 쓴 소감. - 멘붕.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/vc7/items/7e5618fe8a62027d8ae1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)