【;ω| 友達が考えた |ω;】

ゲームプレイ日記をメインに、Web絵本や双子の娘のコトなどをグダグダ雑雑と…

2014年06月

Ruby試験/もくじ

RubySilver/RubyGold試験の時にやった何か

【Ruby試験/もくじ】
■ルビー銀でわかったコト01
ルビー銀でわかったコト01/「勉強に使った本」
ルビー銀でわかったコト02/「試験の方法(前半)」
ルビー銀でわかったコト03/「試験の方法(後半)」
ルビー銀でわかったコト04/「試験を受け易い時期」

■ルビー金で不合格01
ルビー金で不合格01/「試験勉強」
ルビー金で不合格02/「試験直前(雑談)」
ルビー金で不合格03/「試験」
ルビー金で不合格04/「試験後とまとめ」

■RubyGold試験をちょうど合格
RubyGold試験をちょうど合格/「試験」
RubyGold試験をちょうど合格/「勉強」
RubyGold試験をちょうど合格/「試験結果」

■RubyGold試験の自習問題
RubyGold試験の自習問題/もくじ


ITトレメ Ruby技術者認定【Gold】試験 − @IT自分戦略研究所



Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)
Ruby公式資格教https://livedoor.blogcms.jp/blog/nside/article/科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)


Ruby技術者認定試験 公式ガイド (ITpro BOOKs)
Ruby技術者認定試験 公式ガイド (ITpro BOOKs)

RubyGold試験の自習問題/Gold模擬34:何を確認したいのか忘れました7

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold模擬34.rb
# ■何を確認したいのか忘れました7
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
module M1
end

#------------------------------
module M2
end

#------------------------------
class Cls1
  include M1
end

#------------------------------
class Cls2 < Cls1

  include M2

  def foo1
    self.ancestors
  end

  def foo2
    self.class.ancestors
  end
  
  def foo3
    self
  end

end


#------------------------------
class Cls3 < Cls1

  def foo1
    self.ancestors
  end

  def foo2
    self.class.ancestors
  end
  
  def foo3
    self
  end

  include M2

end


#--------------------------------------------------
# Execute
#------------------------------
#puts Cls2.new.foo1  # :in `foo1': undefined method `ancestors' for # (NoMethodError)
               # :in `
'

puts Cls2.new.foo2   #=> Cls2, M2, Cls1, M1, Object, Kernel, BasicObject

puts Cls2.new.foo3   #=> #

puts Cls3.new.foo2   #=> Cls3, M2, Cls1, M1, Object, Kernel, BasicObject


#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold模擬15:何を確認したいのか忘れました6

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold模擬15.rb
# ■何を確認したいのか忘れました6
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
class A
  $a = self

  def hoge
    $b = self
  end

  def piyo
    $c = self.class
  end

end

#--------------------------------------------------
# Execute
#------------------------------
puts "----------1"
x = A.new
puts $a  #=> A
puts $b  #=>
puts $c  #=>
puts A.new  #=> #
puts "----------1-1"
puts A == $a  #=> true
puts A.new == $a  #=> false
puts A.new == $b  #=> false

puts "----------2"
x.hoge
puts $b  #=> #
puts A.new  #=> #
puts A.new.hoge  #=> #
puts "----------2-1"
puts A.new == $b  #=> false
puts A.new.hoge == $b  #=> true
puts A.new.hoge === $b  #=> true
puts "----------2-2"
puts x  #=> #
puts x.hoge  #=> #
puts x == x.hoge  #=> true

puts "----------3"
x.piyo
puts $c  #=> A
puts $c.new  #=> #
puts A.new  #=> #
puts "----------3-1"
puts A.new == $c  #=> false
puts A.new == $c.new  #=> false
puts A == $c  #=> true
puts $a == $c  #=> true

puts "----------4"
puts $c.class  #=>
puts "A".class  #=>

#----------
=begin
print "a = A.new"
a = A.new
print "A == $a -> ", (A == $a)
print "A.new == $b -> ", (A.new == $b)

print "a.hoge"
a.hoge
print "A.new == $b -> ", (A.new == $b)

print "a.piyo"
a.piyo
print "A.new == $b -> ", (A.new == $b)
=end

#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold模擬13:何を確認したいのか忘れました5

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold模擬13.rb
# ■何を確認したいのか忘れました5
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
class A
  @@x = 0
  class << self
    @@x = 1
    def x
      @@x
    end
  end

  def x
    @@x = 2
  end
end

#------------------------------
class B < A
  @@x = 3
end


#--------------------------------------------------
# Execute
#------------------------------
puts A.x  #=> 3

#------------------------------
A.x
puts A.x  #=> 3

#------------------------------
A.new.x
puts A.x  #=> 2


#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold模擬05:何を確認したいのか忘れました4

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold模擬05
# ■何を確認したいのか忘れました…
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
class A
  attr_accessor :x

  #----------
  def y
    @y
  end

  def y=s
    @y = s
  end

  #----------
  def z
    @z
  end

  def z=*s
    @z = s[0]
  end

  #----------
  def xy= s
    @x, *@y = s
  end

end


#--------------------------------------------------
# Execute
#------------------------------

#------------------------------
puts "----------1"
a =  A.new
a.y = "YYY"
puts a.y  #=> YYY

#------------------------------
puts "----------2"
a.z = ["ZZ1", "ZZ2"]
puts "----------2-1"
puts a.z[0]  #=> ZZ1
puts "----------2-2"
puts a.z[1]  #=> ZZ2

#------------------------------
puts "----------3"
a.x = ["ZZ1", "ZZ2"]
puts a.x  #=> ZZ1, ZZ2

#------------------------------
puts "----------4"
a.xy = ["XY1", "XY2", "XY3"]
puts "----------4-1"
puts a.x  #=> XY1
puts "----------4-2"
puts a.y  #=> XY2, XY3


#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold基礎16:何を確認したいのか忘れました3

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold基礎16
# ■何を確認したいのか忘れました3
#------------------------------------------------------------

# org
=begin
module M1 end

module M2 end

class Cls1
  include M1
end

class Cls2 < Cls1
  p self.ancestors
  include M2
end

=end

#--------------------------------------------------
# Define
#------------------------------
# インスタンスメソッドにしてみる

module M1 end

#------------------------------
module M2 end

#------------------------------
class Cls1
  include M1
end

#------------------------------
class Cls2 < Cls1
  puts "----------1"
  p self.ancestors  #=> Cls2, Cls1, M1, Object, Kernel, BasicObject

  def def1
    self.class.ancestors
  end
  
  include M2
  
  include M2  # 2回記述しても問題なし
  
end

puts "----------2"
p Cls2.ancestors  #=> Cls2, M2, Cls1, M1, Object, Kernel, BasicObject

puts "----------3"
p Cls2.new.def1  #=> Cls2, M2, Cls1, M1, Object, Kernel, BasicObject


#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold基礎13:クラスメソッドとインスタンスメソッドのどちらが使用されるか

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold基礎13.rb
# ■クラスメソッドとインスタンスメソッドのどちらが使用されるか
# → 何か思い違いしている。同じ呼び出し方にはならない。
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
class Cls1

  #------------------------------
  def ms1None
    ms1
  end

  #------------------------------
  def ms1Self
    self.ms1
  end

  #------------------------------
  private

  def ms1
    "Cls1.new.ms1"
  end

  #------------------------------
  class << self
    #------------------------------
    def ms1
      "Cls1.ms1"
    end

  end

end

#--------------------------------------------------
# Execute
#------------------------------
puts Cls1.ms1  #=> Cls1.ms1

#puts Cls1.new.ms1Self  # :in `ms1Self': private method `ms1' called for # (NoMethodError)

puts Cls1.new.ms1None  #=> Cls1.new.ms1


#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold基礎12:クラス2でリムーブしたらどうなる?

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold基礎12.rb
# ■クラス2でリムーブしたらどうなる?
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
class Cls1
  def ms1
    "Cls1#ms1"
  end
end

#------------------------------
class Cls2 < Cls1
  undef ms1
end

#------------------------------
class Cls3 < Cls1
  def ms1
    "Cls3#ms1"
  end
#  remove_method ms1 # undefined local variable or method `ms1'
  remove_method :ms1
end

#------------------------------
class Cls4 < Cls1
#  remove_method :ms1 # method `ms1' not defined in Cls4 (NameError)
end


#--------------------------------------------------
# Execute
#------------------------------
puts Cls1.new.ms1  #=> Cls1#ms1

#puts Cls2.new.ms1  # :in `
': undefined method `ms1' for # (NoMethodError)

puts Cls3.new.ms1  #=> Cls1#ms1


#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Gold基礎5:スコープ定義を何回もやる

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Gold基礎5
# ■スコープ定義を何回もやる
# → 初めに定義されてた場所がスコープの範囲になる。
#------------------------------------------------------------

#--------------------------------------------------
# 未定義を参照
#------------------------------
10.times do | i |
  num = i
end

#puts num  # :in `
': undefined local variable or method `num' for main:Object (NameError)


#--------------------------------------------------
# 中で再定義したら
#------------------------------
num = 100
1.times do | i |
  num = 10
end

puts num  #=> 10


#----------
num0 = 100
4.times do | i |

  #----------
  num1 = i  # 定義なのでエラーにならない

  #----------
#  num2 = num2 + i  # 右辺で未定義を参照しているのでエラー

  #----------
  num0 += i  # 外で定義済みのを参照しているのでエラーにならない

end

puts num0  #=> 106
#puts num1  # スコープ外なのでエラー

#------------------------------------------------------------
# END
#------------------------------------------------------------

RubyGold試験の自習問題/Goldメトレ56:何を確認したいのか忘れました2

RubyGold試験の勉強の時に作成した自習問題
・過去に作成したものなのでコードの説明はありません(出来ない…)。
・実行結果をコメントとして記述しています(コード #=> 結果)。
・右往左往しているのでコードにもコメント化している箇所があります。

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Goldメトレ56.rb
# ■何を確認したいのか忘れました2
#------------------------------------------------------------
#

#--------------------------------------------------
# Define
#------------------------------
class Log

  [:debug, :info, :notice].each do |level|
    define_method(level) do
      @state = level
    end
  end

  attr_reader :state

end

class Log
  [:debug].each do |level|
    define_method(level) do      # :25: warning: method redefined; discarding old debug
                                 # :14: warning: previous definition of debug was here
      @state = level
    end
  end

end


=begin
class Log

  [:debug, :info, :notice].each do |level|
    define_method(level) {  # do  → {
      @state = level
    }                       # end → }
  end

  attr_reader :state

end
=end


#--------------------------------------------------
# Execute
#------------------------------
log = Log.new
log.debug
p log.state     #=> :debug
puts log.state  #=> debug

log.info
p log.state  #=> :info

log.notice
p log.state  #=> :notice

#------------------------------------------------------------
# END
#------------------------------------------------------------
【;ω| もくじ |ω;】
−−−−−−−−−−
■ゲームプレイ日記
−−−−−−−−−−
■双子の娘
−−−−−−−−−−
■IT関連
−−−−−−−−−−
■創作物
−−−−−−−−−−
■その他
−−−−−−−−−−
【;ω| 広告 |ω;】
  • ライブドアブログ