Basic Operators

昨日に引き続いて https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html を読んでいる。

新しく知ったこと

  • 代入演算子=はCと違って値は生み出さない。 c = (a = b) はエラー
  • 算術演算子はオーバーフローしない。リテラルコンパイルエラー、実行時に決まる値ならEXC_BAD_INSTRUCTION
  • 剰余は modulo ではなく remainder。 -9 % 4-1
  • 複合代入演算子 (+= など)Cと違って値は生み出さない。
  • 文字列の比較 s=="hello" 大小比較もできる "hello"<"world"true
  • タプルは左から右に順に比較 (3, "apple") < (3, "bird")true (Swift標準ライブラリでは7個未満まで)
  • nil結合演算子 (a ?? b) は、 (a ? a! : b) と同じ。aが非nilのときbは評価されない(短絡評価)
  • One-Sided Range Operator for name in names[2...] { for name in names[...2] {
  • くり返しじゃなくても使える let range = ...5range.contains(-1)true

他はだいたいC等かと同じ。身構えていたよりは驚きは少ない。 と思ったらまだBasicだった。これがAdvancedとなったらどうなるか楽しみ。