swiftはじめました

2ヶ月前くらいからswift始めてみた感想

  • やたらvarやらletで怒られる

varは変数でletは定数らしい
変わってないものをvarで書いたり、letで書いたものの値を変えようとすると警告がでる

var a = "test"
print(a)
-> Variable 'a' was never mutated; consider changing to 'let' constant

let a = "test"
a = "foo"
print(a)
-> Cannot assign to value: 'a' is a 'let' constant
  • やたら!?つけろって怒られる

下のエラーがよく出る

Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?  

Optional型...アンラップ...(なんぞ?
Optional型とはnilを許容した型で、宣言時に?をつけてラップするらしい

var foo:Int?
foo = nil
var bar:Int = foo
-> Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?

値を取り出すにはアンラップしてあげないと駄目で末尾に!か?をつけてアンラップするらしい

! ?
nilが入っているとランタイムエラー nilが入っているとnilを返す

qiita.com

  • guardというものがあるらしい

アンラップ時に実値かnilかで条件分岐が必要だったりする時、guardを使っても書けるらしい

if文

func test() -> Int? {
    var foo:Int?
    foo = nil
    if foo != nil {
        return foo!
    }else{
        print("warn")
        return nil
    }
}

guard

func test() -> Int? {
    var foo:Int?
    foo = nil
    guard let bar = foo else {
        print("warn")
        return nil
    }
    return bar
}

furuya02.hatenablog.com