感想
今日は退勤後にスーパーに買い物に行ってきた.人も少ないし安くなってるしでいいことずくめ.今日はイワシとしめ鯖が安かったのでイワシは蒲焼き丼にして食べた.それと実家から野菜がどかっと送られてきたので食べきれない分は漬物にするなどした.
今日書いたコード
今日からBasic Operatorsの章に入った.単項演算子の例として!a
やa!
等,と書かれていたので,ほーんRubyみたいに書けるんやなって思ったが後者はforce-wnwrapだった.それはそう.
Rubyみたいにって言ってるのは↓のこと.
a = false
!a == a.!
let a = false //print(a!) print(-5 % 3) (1, 2) < (2, 1) func lt<T: Comparable, U: Comparable>(_ lhs: (T, U), _ rhs: (T, U)) -> Bool { if lhs.0 != rhs.0 { return lhs.0 < rhs.0 } else { return lhs.1 < rhs.1 } } assert(((1, 1) < (2, 2)) == lt((1, 1), (2, 2))) assert(((1, 2) < (2, 1)) == lt((1, 2), (2, 1))) assert(((2, 1) < (1, 2)) == lt((2, 1), (1, 2))) assert(((2, 2) < (1, 1)) == lt((2, 2), (1, 1)))
初めて知ったこと
Tupleの比較演算子の挙動.
- 左から右に向かって異なるペアを探す
- 異なるペアが見つかったらそれらを比較する
- 異なるペアが見つからなかったら2つのTupleは等しいとする
だから(1, 2) < (2, 1)
はtrueになる.