develop
where Keyword (for의 where, switch 의 where, extension의 where, func의 where) 본문
iOS
where Keyword (for의 where, switch 의 where, extension의 where, func의 where)
pikachu987 2021. 1. 13. 12:29반응형
코드를 만들다 보면 많은 곳 에서 where을 사용하고 있다.
where를 사용하는 곳을 정리해보자
for
let array: [Int] = [1, 2, 3, 5, 7, 12, 24, 130]
for element in array where element%2 == 0 {
print(element)
}
2
12
24
130
for문에 where을 추가해서 원하는 값만 동작하게 할수 있다.
switch case
enum NetworkType {
case success
case suspend
case error(code: Int)
var result: Bool {
switch self {
case .success:
return true
case .suspend:
return false
case .error(let statusCode) where 200 < statusCode && statusCode < 300:
return true
default:
return false
}
}
}
case에 where를 넣어서 해당하는 것만 빼낼수 있다.
extension
extension Array where Element == Int {
func sum() -> Int {
return self.reduce(0, +)
}
}
[1, 3, 5, 6].sum()
extension Dictionary where Key == String, Value == Int {
func sum() -> Int {
self.keys.compactMap({ self[$0] }).reduce(0, +)
}
}
["A": 1, "B": 3, "C": 5, "D": 6].sum()
extension에 원하는 타입만 받을수 있다.
func
func printValue<T>(_ value: Optional<T>) where T: Equatable {
print(value)
}
self.printValue(50)
self.printValue("pikachu987")
class People: Equatable {
let name: String
let age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
static func == (lhs: People, rhs: People) -> Bool {
return lhs.name == rhs.name && lhs.age == rhs.age
}
}
self.printValue(People(name: "pikachu987", age: 50))
func에 원하는 타입만 받을수 있다.
반응형
'iOS' 카테고리의 다른 글
OptionSet (0) | 2021.01.15 |
---|---|
AccessControl 접근 한정자 (0) | 2021.01.14 |
Higher Order Functions 고차함수 (0) | 2021.01.12 |
AutoLayout (0) | 2021.01.11 |
Blocking, Non-blocking (0) | 2021.01.10 |
Comments