[2주 - 2일차] 학습 정리

새로 알아간 것들

.Gitignore

#, (빈라인)빈 라인이며 아무젓도 영향을 주지 않는다
*.jpg확장자가 jpg인 파일을 무시합니다
folder/해당 폴더 모든 파일을 무시합니다
folder/*.jpg해당 폴더의 확장자가 .a인 파일을 무시합니다
folder_name/**/*.jpg해당 폴더 포함한 하위 모든 폴더에서 확장자가 .jpg인 모든 파일을 무시합니다
/*.a현재 폴더의 확장자가 .a인 모든 파일을 무시합니다.

refference

주석

보통은

// 꼭지 주석

/// detail한 설명

주석예약

주석예약을 달아두면 index를 잘 볼 수 있다.

//MARK:- 
//FIXME:- 
//TODO:- 

private

외부에서 접근하지 않기 위해 private 사용하는 습관을 기르자

ASCII Code

var str = "Ho"

extension StringProtocol {
    var asciiValues: [UInt8] { compactMap(\.asciiValue) }
}
print(str.asciiValues) // [72, 111]
print(str.utf16.map( {Int($0)} )) // [72, 111]

indices

let greeting = "Guten Tag"

for index in greeting.characters.indices {
    print(greeting[index])
}
// G
// u
// t
// e
// n
// 
// T
// a
// g

수업

피드백

  • contains를 쓴다면 Array보다는 set을 쓰는 것이 좋다

  • 변수이름을 설정할 때 타입보다는 어떤 역할을 하는지 변수이름을 정해보기

Optional

값이 없을 수 있는 상태 -> nil이라는 값이 있을 수 있다

Optional Binding

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!내가 개발자가 책임지겠다 이 뜻!

왠만하면 쓰지 말자

CharacerSet

이 안에는 문자만 있는 set, 숫자만 있는 set 등 라이브러리

값 바인딩 (value-binding)

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")
}

옵셔널 (Optional)

옵셔널 또는 암시적추출옵셔널(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)")

타입변환 (Type-Casting)

타입 변환을 하거나 타입을 매치

let someValue: Any = 100

swicth someValue {
    case is String: print("문자열이었어!")
    case let value as Int: print(value+1)
    default: print("Int도 아니고 String도 아니네!")
}

Where 절

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)")
}

String을 Int로 씌우기

문자열을 Int로 형변환 하려해도 오류가 나지 않는다

var a = 1
var b = "hoho"
var num = Int(b)

print(num)

// nil

좋은 웹페이지 즐겨찾기