#, (빈라인) | 빈 라인이며 아무젓도 영향을 주지 않는다 |
---|---|
*.jpg | 확장자가 jpg인 파일을 무시합니다 |
folder/ | 해당 폴더 모든 파일을 무시합니다 |
folder/*.jpg | 해당 폴더의 확장자가 .a인 파일을 무시합니다 |
folder_name/**/*.jpg | 해당 폴더 포함한 하위 모든 폴더에서 확장자가 .jpg인 모든 파일을 무시합니다 |
/*.a | 현재 폴더의 확장자가 .a인 모든 파일을 무시합니다. |
보통은
// 꼭지 주석
/// detail한 설명
주석예약을 달아두면 index를 잘 볼 수 있다.
//MARK:-
//FIXME:-
//TODO:-
외부에서 접근하지 않기 위해 private 사용하는 습관을 기르자
var str = "Ho"
extension StringProtocol {
var asciiValues: [UInt8] { compactMap(\.asciiValue) }
}
print(str.asciiValues) // [72, 111]
print(str.utf16.map( {Int($0)} )) // [72, 111]
let greeting = "Guten Tag"
for index in greeting.characters.indices {
print(greeting[index])
}
// G
// u
// t
// e
// n
//
// T
// a
// g
contains를 쓴다면 Array보다는 set을 쓰는 것이 좋다
변수이름을 설정할 때 타입보다는 어떤 역할을 하는지 변수이름을 정해보기
값이 없을 수 있는 상태 -> nil이라는 값이 있을 수 있다
if let actualNumber = Int(possibleNumber) { // or guard let
print("\"\(possibleNumber)\" has an integer value of \(actualNumber)")
} else {
print("\"\(possibleNumber)\" could not be converted to an integer")
}
guard let actualNumber = Int(possibleNumber) {
return
}
print(actualNumber) // 밖에서 가능하다
강제 Unwrapping을 하면 str!
내가 개발자가 책임지겠다 이 뜻!
왠만하면 쓰지 말자
이 안에는 문자만 있는 set, 숫자만 있는 set 등 라이브러리
var 또는 let 으로 이미 있는 값을 다시 binding 하는 경우
let point = (3,2)
switch point {
case let (x,y):
print("hello at \(x),\(y)")
}
switch point {
case (let i, _):
print("hello loop \(i) only")
}
switch point {
case (_, var j):
j += 10
print("hello loop \(j) only")
}
옵셔널 또는 암시적추출옵셔널(IUO)
옵셔널 값들 중에서 nil 아닌 값을 찾아낼 때
var someOptional : Int? = 42
if case .some(let x) = someOptional { print(x) } // optional도 enum
if case let x? = someOptional { print(x) }
let arrayOfOptionalInts: [Int?] = [nil, 2, 3, nil, 5]
// Match only non-nil values.
for case let number? in arrayOfOptionalInts {
print("Found a \(number)")
타입 변환을 하거나 타입을 매치
let someValue: Any = 100
swicth someValue {
case is String: print("문자열이었어!")
case let value as Int: print(value+1)
default: print("Int도 아니고 String도 아니네!")
}
let tuples = [(1,2), (1,-1), (1,0), (0,2)]
for tuple in tuples {
switch tuple {
case let (x,y) where x == y: print("같네")
case let (x,y) where x == -y: print("마이너스")
case let (x,y) where x>y: print("크다")
case (1, _): print("x=1")
default: print("\(tuple.0),\(tuple.1)")
}
}
let arrayOfOptionalInts : [Int?] = [nil, 2, 3, nil, 5]
for case let number? in arrayOfOptionalInts where number > 2 {
print ("Found a\(number)")
}
문자열을 Int로 형변환 하려해도 오류가 나지 않는다
var a = 1
var b = "hoho"
var num = Int(b)
print(num)
// nil