Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

2015-06-01から1ヶ月間の記事一覧

Rubyクラス定義 - Silver/Gold試験対策

p Class.ancestors #=> [Class, Module, Object, Kernel, BasicObject] p Class.instance_methods(false) #=> [:allocate, :new, :superclass] # クラス名 FirstClass = Class.new # 無名クラス klass = Class.new # クラス名 NamedClass = klass klass.name…

Rubyブロック#3 - Silver/Gold試験対策

rubyのブロックはクロージャである ブロック外の変数nを参照したり代入できる。(defメソッドなどではできない) n = 10 100.times{ n += 10 } puts n カリー化。引数を最初から耳揃えて渡さなくても良いことになる。 bar = ->(fuga, hoge){hoge+fuga}.curry p…

Rubyブロック#2 - Silver/Gold試験対策

def hoge(a, b, &fuga) fuga.call(a*b) end hoge(2, 3) {|arg| puts "a,bを掛け算して#{arg}でした" } def bar(a, b) puts yield(a*b) end hoge(2, 3) {|arg| puts "a,bを掛け算して#{arg}でした" } procオブジェクトの実行には & + callでも yieldでもどち…

Rubyブロック#1 - Silver/Gold試験対策

まずはメソッドから メソッドの計算結果は代入できるものの、 メソッド式を丸ごと代入できない Object#methodによって、メソッドを変数に代入できる。 def hoge p 1 end a = method(:hoge) a.call #=> 1 a.() #=> 1 a[] #=> 1 def fuga(num) p num end b = m…

Ruby例外#2 - Silver/Gold試験対策

Kernelモジュールにraiseメソッドがあり、エラーを発生させることができる raise ZeroDivisionError #=> ZeroDivisionError # エラークラスを指定しない場合はRuntimeError begin raise rescue => e p e end #=> RunTimeError raise ZeroDivisionError, "0で…

Ruby例外#1 - Silver/Gold試験対策

すべてのエラークラスのヒエラルキー。 StandardErrorとそれシステム系のエラークラス分類を覚えておく SystemCallErrorが、StandardErrorの下にあったり、 プログラムバグとしては頻発するであろう、NameError-NoMethodErrorが、 StandardErrorの配下にもか…

Rubyループ(繰り返し)#3 - Silver/Gold試験対策

redoとnextの出力の違いを確認 redo ary = ("a".."d").to_a v = 0 ary.each do |str| v += 1 if v == 3 redo end print("#{v}: #{str}") unless str == ary.last print(", ") end end #=> 1: a, 2: b, 4: c, 5: d next ary = ("a".."d").to_a m = 0 ary.each…

Rubyループ(繰り返し)#2 - Silver/Gold試験対策

whileとuntil a = 0 while a < 10 puts "#{a += 1}回目の実行中" end puts "while終了しました" until a >= 20 puts "#{a += 1}回目の実行中" end puts "until終了しました" for for i in [1,2,3,4] puts i end break while true break # 中断して脱出 puts …

Rubyループ(繰り返し)#1 - Silver/Gold試験対策

;ループとスコープ。 for文は独自のスコープを持たない for i in [1,2,3] do num = i end puts i #=> 3 [1,2,3].each do |i| num = i end puts num #=>undefined local variable or method `num': NameError 100.times do |i| i end p i #=>undefined local …