TechAcademy Ruby編
この記事はTechAcademyの学習メモruby編です。
TechAcademyって何とかそういうのはメインページのこちらから。
rubyは省略が多用できる言語作法なので、戸惑う事が多かったです。
基本的な文法などはいつものように省略します。
書き方やイディオムで参考になったのは下記。
[初心者向け] RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか
Railsを触る際知っていると便利なRubyの基礎【ブロックとかシンボルとか】
Ruby 2.1 / Rails4.1 の意外に忘れられている便利なメソッド
知って得する!55のRubyのトリビアな記法
cloud9のコンソールではirbで動作確認を行う。
別にcloud9に限った話ではないと思うんですけどね。
単文スクリプトならわざわざファイル作らないで動作確認できる。
library irb
ちなみにirbは改行できずに1行1行返り値が表示されます。
コンパイル言語で育った自分には最初違和感がありましたね。
exit で脱出です。
ハッシュとシンボル
ハッシュはJavaでいうMapコレクションだと思えば良いはず。
シンボルは任意の文字列と一対一に対応するオブジェクトらしい。
よくわからなかったので検索してみたけどシンボルは深淵ということだけわかった(駄目)
詳しくは下記リンクを参照。
class Symbol
文字列にするか、シンボルにするか、いったい何が違うのだ?
Railsを触る際知っていると便利なRubyの基礎 [ブロックとかシンボルとか]
//下記3つはだいたい同じ意味(厳密には違うけど)
//一番元となるハッシュの書き方
fruit_colors = { "apple" => "red", "orange" => "orange", "banana" => "yellow" }
//シンボルを使ったハッシュの書き方
fruit_colors = { :apple => "red", :orange => "orange", :banana => "yellow" }
//更に省略できるハッシュの書き方
fruit_colors = { apple: "red", orange: "orange", banana: "yellow" }
個人的には一番下の書き方で慣れていこうと思う。
繰り返し処理
ここは慣れが必要、インクリメントによるforではなく、拡張For文が標準と考えよう。
each文
(配列).each do |(配列の要素)|
(配列の要素に対して行う処理)
end
↓ 自分の理解
(配列).each do |(自分で名づけて良いループ内で使う配列の要素,要素2)|
(配列の要素に対して行う処理)
end
なので|hogehoge|のhogehogeをループ文中に使わないとエラーが起きる。
範囲オブジェクトなる存在
範囲オブジェクト(5..10)を使えば普通のfor文みたいに出来る。
//3つの配列を表示
cities = ["Tokyo", "Osaka", "Nagoya"]
(0..2).each do |number|
puts cities[number]
end
あと-1は最後の要素を指定されることになる。
//上と同じ出力結果
cities = ["Tokyo", "Osaka", "Nagoya"]
(0..-1).each do |number|
puts cities[number]
end
size - 1ではなく、マイナスのインデックスで最後の文字や要素を指定する
uptoメソッド
> 3.upto(5) do |n|
> puts "■" * n
> end
↓
■■■
■■■■
■■■■■
3から5を表す
範囲オブジェクトと似てるかな。
メソッドは引数のカッコを省略できる
これのせいで初学者にはRailsのコードが凄い読みづらい(苦笑)
//引数がハッシュ
> tax({ hoge: 500, fuga: 10 })
//引数直下のハッシュの{}は省略可能
> tax( hoge: 500, fuga: 10 )
//ちなみにハッシュinハッシュの中の{}は省略できなかった。
//メソッドの()は省略可能
> tax hoge: 500, fuga: 10
::(ダブルコロン)は.(ドット)と(ほぼ)同じ
//ほぼ下の2つは同じ
a = Book.name
a = Book::name