2018-01-01から1年間の記事一覧

Rubyにおける「シンボル」ってなんだ?

結局「シンボル」ってなに… 結論から言うとシンボルはRubyの内部で整数として扱われる。2つの値が同じか調べるときなど、文字列よりも高速に処理することができる。 シンボルのほうがさらにメモリの使用効率が良いらしい。 irb(main):009:0* 'a'.object_id =…

for文とeachの違いってなんなん?

最近コードレビューをしていて、for文を使っているコードを読んだときに、「Rubyだったらeach使いなよ」とレビューしてました。 Rubyだったらeach。お決まりのように考えていたのですが…なんで? 違い 結論から言うと、for文は配列の要素を受け取る変数、for…

do...end と {} の違い

do...end と {} の違い 基本的にはどっちを使っても結果は同じ。 違いは、 do...end よりも {} のほうが 結合度が強い どういうことか? 配列のdeleteメソッドの例 a = [1, 2, 3] a.delete(100) => 0 a.delete(100) do 'できない' end => "できない" ブロッ…

ブロックローカル変数

ブロックローカル変数とは? あまり使う機会はない。というか使わないと思う。 だけどもまたRuby勉強し直してて初めて知ったことなのでめも。 ブロック引数を;で区切り、続けて変数を宣言すると、ブロック内でのみ有効な独立した変数を扱うことができる numb…

rake taskで可変長引数を使う

rake taskで可変長引数を使う 約1年間Railsエンジニアやってて初めてrake task書いた。 その時のめも。 to_a メソッドを使う namespace :test_task do desc '可変長引数を受け取るtask' task :hoge, ['huga'] => :environment do |_task, args| p args.to_a …

Ruby勉強し直してみた 3

メソッドの可変長引数 Ruby勉強し直してて普段あんま使ったことないのでめも。 自分で定義するメソッドで可変長引数を使いたければ引数名の手前に*をつける def メソッド名(引数1, 引数2, *可変長引数) # メソッド処理 end みたいに。 例 def test(*name) na…

Ruby勉強し直してみた 2

inject/reduce たたみ込み演算なるもの… 例を見たほうが早い numbers = [1, 2, 3, 4] sum = numbers.inject(0) { |result, n| result + n } ブロックの第一引数(result)には初回のみinjectメソッドの引数が入る。 2回目以降は前回のブロックの戻り値が入る。…

Danger 導入した

機械的なレビューを自動で行ってくれるDangerというgemを最近導入したので、その時の Dangerってそもそも何? DangerのGithubには以下のことが書かれています Stop saying "you forgot to …" in code review Formalize your Pull Request etiquette. 「あな…

Rails ActiveRecord いろいろ

仕事柄プルリクをレビューすることが多々あるのですが、やっぱりまだまだわかっていないことが多い… 忘れないようにメモメモ… inverse_of inverse_of を指定したリレーションのある2つのモデルでは、双方から同一のインスタンスを参照することができる。 つ…

Ruby勉強し直してみた 1

Railsエンジニアになってはや1年が経とうとしています。そんな中で最近思うのですが「Railsはわかってきたけれども、Rubyが全くわからない…」 これはやべぇと思い、ここで改めてRubyを勉強し直していきます その備忘録 Rubyの演算子 rubyの演算子には優先度…

Go langでFizzBuzz

田舎育ちのエンジニアです Go lang気になってたのでちょっと勉強始めてみました 備忘録です。 Go langとは Go言語は2009年にGoogleによって作られたオープンソースの静的言語です。 特徴としては ・ シンプル ・ コンパイル・実行速度が早い。 ・ 安全性が高…