a symmetry

雑な自己満足を残していくブログ 年度によってテンションが違うっぽい

Swift3始めました

なんかiOS開発をやることになったっぽいので忘備録

 日本語の記事少なくない?

なぜ

  • 某社で某々あったらなんかSwiftをやる話になった

覚えておきたいこと

引数名無しで渡したい時は_をつける.

func squareArea(_ width:Int, _ height:Int) -> Int {
  return width * height
}

squareArea(3,4)

関数名が同じでも引数名が違うとオーバーロードになる.(オーバーロードする?オーバーロードできる?)

func calc(a:Int, b:Int) ->{
  return a + b
}

func calc(c:Int, d:Int) ->{
  return c * d
}

こういう時無駄にどうでもいいことばっか思い浮かんで実験したくなっちゃうよね f:id:Knium:20161113005734p:plain

ジェネリクスな関数というものがある.

ジェネリクス | Swift言語を学ぶ

わかりがあった

func bigger<T>(val1: T, val2: T) -> T {
    return val1 > val2 ? val1 : val2
}

でTが型を指すらしい,例えば Int のbigger()とfloat()版のbigger()をオーバーロードさせずにこれで同じことができるっぽい,すごい

これでも遊んでみたかったけどf:id:Knium:20161113011021p:plain って怒られてググったけど

stackoverflow.com

よくわからないけどジェネリクスな関数で引数に対して演算子を使う時はちゃんとそれが適しているかどうかコンパイル時にはわからないからできないってことはよくわかったのでそのうち理解していきたい

クロージャは名前のない関数のオブジェクト, 未だによくわからず

 5.. <10 # CountableRange(5..<10)
Array(5..<10) # [5, 6, 7, 8, 9]

辞書は当然キーにも型が決まる.

ねむいおやすみ

f:id:Knium:20161113024145j:plain

おいしかった