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 = ...5
でrange.contains(-1)
はtrue
他はだいたいC等かと同じ。身構えていたよりは驚きは少ない。 と思ったらまだBasicだった。これがAdvancedとなったらどうなるか楽しみ。