Ruby の each_with_object と inject について
each_with_object とは
each_with_object を使用すると、配列やハッシュの要素を使って、
新たに配列やハッシュを作成したりする際に、簡潔に書くことができます。
簡単な例を以下に示します
array = [[:hoge, 1], [:fuga, 2], [:piyo, 3]] array.each_with_object({}) do | (key, value), hash | hash[key] = value end # => {:hoge=>1, :fuga=>2, :piyo=>3}続きを読む
12月に読んだ本まとめ
ども、お茶漬けです。
2017年に入り1週間が経とうとしています。
9日まで冬休みの僕も、そろそろこのダラダラ生活から抜け出さないとなと思っており。まずは、先月読んだ本を振り返ってみようかなと思います。
なぜ、あなたの仕事は終わらないのか 中島聡
元マイクロソフトエンジニアの中島聡さんが、自身の経験談を交えながら、実際に本人が取り組んでいる時間術、その名もロケットスタート時間術について書かれてあります。
・どんなに頑張って100%のものを作っても、振り返ると90%,80%のものに見える
・全ての仕事は必ずやり直しになる
・やりたいことをやるためには、やりたくないことを速攻で終わらせるしかない
・考えてから手を動かすではなく、手を動かしながら考える
・仕事において重要なのは、楽しいかどうかその一点
以上のような考え方の元、中島さんはロケットスタート時間術で仕事に向き合うことを進めています。
ロケットスタート時間術とは
ロケットスタート時間術とは、ズバリ2割の時間で仕事の8割を終わらせることです。
まず、納期内に仕事を終わらせるためには、余裕を持って取り組むことが必要です。なぜなら、初期の段階で立てた予定通りにことが進むなんてことはまずない。必ず、予期せぬトラブルは起こるものだからです。
そのために、最初に2割の時間で、何が何でも仕事の8割を終わらせ、余裕を持ちます。そして、残りの8割の時間で、2割を終わらせ、さらにブラッシュアップしていきます。
しかし、
ロケットスタート時間術の本質は余裕を持つことであり、高速で次々と仕事を終わらせることではない
と中島さんは仰っています。
伝えたいことは、仕事を終わらせることではなく、人生を楽しむこと。なのです。
なぜ、あなたの仕事は終わらないのか スピードは最強の武器である
- 作者: 中島聡
- 出版社/メーカー: 文響社
- 発売日: 2016/06/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (9件) を見る
Swiftでdefer文を使う
Swift2.0から追加されたdefer文。スコープを抜ける際に処理をするものですが、Swift3.0で試してみました。
func myFunc(){ defer { print("defer") } print("hoge") } myFunc()
実行結果は以下のようになります。
hoge defer
関数以外のスコープで使ってみる
func myFunc2(){ for i in 0..<3 { defer { print("defer \(i)") } print("fuga \(i)") } } myFunc2()
実行結果
fuga 0 defer 0 fuga 1 defer 1 fuga 2 defer 2
defer文を複数書いてみる
func myFunc3(){ defer { print("hogera") } defer { print("piyo") } defer { print("fuga") } print("hoge") } myFunc3()
実行結果
hoge fuga piyo hogera
使い所
自分の場合は、Swift Perfect のサンプルを触っている時にdefer文を目にしたのですが、そこでは、DBに接続し目的の処理を行った後、defer文内にDBとの接続を切る処理を書く。というように使われていました。
他にも、guard文での必要条件にあっていない場合にdefer文の処理を実行させる。といったような使い方ができるのではないでしょうか。
Swiftで正規表現を使って文字列の操作を行う
Swiftで正規表現を使いたかったんだけど、調べて行くうちに、Swiftで正規表現ってなかなか面等らしく、どーしようかなと思っていると。
とても便利なStringExtensionを書いている方がいらっしゃたので、使わせていただきました。
Swift 3.0での基本的な正規表現を行うextension - Qiita
続きを読む【2016年】 個人的おすすめアニメランキング!TOP10!!
ども!お茶漬けです!!
今年も残すところあと3日!!
ということで2016年のアニメを振り返ってみました。あんまり数が多くなってもあれなので、個人的に本当に面白かった10作品をランキング形式で紹介していきます!
年末年始に見てみてはいかがでしょうか?
それではどうぞ!!
10位 甲鉄城のカバネリ
世界中に産業革命の波が押し寄せ、近世から近代に移り変わろうとした頃、突如として不死の怪物が現れた。鋼鉄の皮膜で覆われた心臓を撃ち抜かれない限り滅びず、それに噛まれた者も一度死んだ後に蘇り人を襲うという。後にカバネと呼ばれる事になるそれらは爆発的に増殖し、全世界を覆い尽くしていった。
4月から全12話で放送された春のノイタミナ枠。
江戸後期~明治初期の日本を舞台にした、日本版ゾンビアニメ。
ストーリーは好き嫌いが分かれそうではあるが、「死んでも生きろ」のキャッチコピーからも伝わるように、キャラクターそれぞれが自分の過去と向き合いながら絶望しながらも、それでも生きようとする、熱量の高いアニメ。
OPをegoistが歌っているあたりもgood
warning: result of call to '~~~' is unused が出た時の対処法
Swift3.0では返り値のある関数を使った時に、その返り値を使用しなかった場合に警告が出るようです。
func addOne(num: Int) -> Int{ return num + 1 } addOne(num: 2) // warning: result of call to 'addOne' is unused
対策としては
Swift error: argument labels '(_:)' do not match any available overloads が出た時の対処法
error: argument labels '(_:)' do not match any available overloads が出た時に少し迷ったので、その対処法を書いておきます。
struct Cube { var area: Int init(height: Int ) { area = height * height } init(half height: Int){ area = height * height / 2 } } let cube = Cube(10) // Argument labels '(_:)' do not match any available overloads続きを読む