僕は、普段仕事でRailsで作られた製品のSE的なことをしているがプログラムは全く書けないし、読めない。
それでも何とか心優しいメンバーに支えられながら日々仕事をしてきたのだが、よくよく考えてみると「自分は何もできない」だとやっと気付いた。
少し前から薄々感じてはいたが、ただただ毎日を過ごす生活の中で行動できずにいたのだが、やっぱりプログラムが読める/書けるようになりたい!!
で、先輩に相談したところ、先ずはRuby技術者認定試験Silver
を取ってみろってことなので、勉強した内容をまとめていこーと思う。
同じ意味を持つメソッド
- map = collect
- select = find_all
- find = detect
- delete_if = reject!
- inject = reduce
include/require
ちょっとよくわからない。
とりあえず、これだけ覚えた
Mathモジュールの定数
PI
を使いたい時はinclude
するかMath::PI
って書くrequire
時はダブルコーテーションで囲む
require "csv"
破壊/非破壊的メソッド
破壊
基本的には、!
末尾についたメソッドは破壊的となる
- concat
- shift
- unshift
- push
非破壊
- chop
- chomp
- compact
- uniq
- upcase
(例)以下の場合chop
とchomp
は非破壊的メソッドなので、何もしないことになる
x = "Hello, World.¥n"
x.chop
x.chomp
p x
=> "Hello, World.¥n"
例外
基本的には、こんな感じ
begin
処理
rescue
例外が発生したら実行される(複数書くことが可能)
else
例外が発生しなかったら実行される
ensure
必ず実行される
end
begin
puts 10 / 0
rescue ZeroDivisionError => ex
puts ex.message
ensure
puts "エラー発生"
end
文法
変数について
- ローカル変数:アルファベット小文字で始まり、「1」文字以上
- グルーバル変数:
$
で始まる - インスタンス変数:
@
で始まる - クラス変数:
@@
で始まる - 定数:アルファベット大文字で始まる
偽の値
- nil
- false
※""
や0
は真になる
三項演算子
# 「条件 ? 条件が真の場合の値:条件が偽の場合の場合」
x = 5
y = x < 5 ? "A" : "B"
puts y
=> B
文字列
変換
# 整数と見なされない文字があれば、一つ前の文字まで変換する
p "12345abcde".to_i
=>12345
削除
puts "012356789".delete("12-56-")
=> 0789
puts "012356789".delete("^12-56-")
=> 12356
puts "abcdefg.¥r¥n".chomp
=> abcdefg.
puts "abcdefg.¥r¥n".chop
=> abcdefg.
puts "abcdefg.".chop
=> abcdefg
配列
取り出してみる
a = [1,2,3,4]
# 全部同じ結果になる
p a[1...3]
=> [2, 3]
p a.slice(1,2)
=> [2, 3]
p a[2..-2]
=> [2, 3]
p a[1,2]
=> [2, 3]
演算子
a = [1,2,3]
b = [1,3,5]
p a & b
=> [1, 3]
p a | b
=> [1, 2, 3, 5]
p a + b
=> [1, 2, 3, 1, 3, 5]
p a - b
=> [2]
ハッシュ
生成方法
{a: 1, b: 2, c: 3} # OK
Hash[:a, 1, :b, 2, :c, 3] # OK
Hash.new(:a) # OK
{a = 1, b = 2, c = 3} # NG
{:a 1, :b 2, :c 3} # NG
削除
h = {a: 1, b: 2, c: 3}
p h.clear
=> {}
h = {a: 1, b: 2, c: 3}
h.delete(:a)
p h
=> {:b=>2, :c=>3}
h = {1 => "papa", 2 => "mama", 3 => "jiji", 4 => "baba"}
p h.reject {|x,y| x < 2}
=> {2=>"mama", 3=>"jiji", 4=>"baba"}
存在するか
h = {a: 1, b: 2, c: 3}
h.has_key?(:a)
=> true
h.include?(:a)
=> true
h.member?(:a)
=> true
正規表現
p "HogeHOGEhoge"[/[A-Z][^A-Z]+/]
=>"Hoge"
p "tanaka saitou 543 harada 112 noguchi".scan(/¥d+/).length
=> 2
p "tanaka saitou 543 harada 112 noguchi".scan(/¥w+/).length
=> 6
まとめ - 2016/8/5追記 -
昨日受験してきましたが、無事に合格しましたー!!
なので、簡単ではありますが今回受験して思ったこと=合格必勝法をまとめます!!
- 各メソッドの戻り値を覚えておく
- 破壊的か非破壊的か覚えておく
-
Ruby技術者認定試験合格教本 Silver/Gold対応 Ruby公式資格教科書
の予想問題集をやり込む - ↑↑の予想問題集に出てくる問題を全てirbで実際に動かす これ一番大事!!
最後の行に書いたことが何より大事です。
今回僕の反省点は問題集をやり過ぎて何となくで記憶してしまったこと。
実際の試験は問題集の逆が出たりすることが、めちゃくちゃ多かったのが感想です。
皆さんの参考になれば嬉しいです。