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

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

■ニコニコ動画に動画アップしました

【;ω| Ruby試験 |ω;】

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

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

→ 「他の問題


#! ruby -Ks

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

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

  def foo
    'Cls1#foo'
  end

end

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

  def foo
    super + ':Cls2#foo'
  end

  alias bar foo

end

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

  alias bar foo

  def foo
    super + ':Cls3#foo'
  end

end


#--------------------------------------------------
# Execute
#------------------------------
puts Cls2.new.bar  #=> Cls1#foo:Cls2#foo
puts Cls3.new.bar  #=> Cls1#foo


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

RubyGold試験の自習問題/Goldメトレ21:インスタンス変数の定義

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# Goldメトレ21.rb
# ■インスタンス変数の定義
# → attr_accessor はシンボル指定しないとエラーになる
#------------------------------------------------------------

#--------------------------------------------------
# シンボル
#--------------------------------------------------
# Define
#------------------------------
class C1
  attr_accessor :x1
end

#------------------------------
# Execute
#------------------------------
c11 = C1.new
c11.x1 = "XC1"
puts c11.x1  #=> XC1

c12 = C1.new
puts c12.x1  #=> (何もなし)


#--------------------------------------------------
# 変数
#--------------------------------------------------
# Define
#------------------------------
class C2
#  attr_accessor x1  # :in `': undefined local variable or method `x1' for C2:Class (NameError)
                    # :in `
'
end


#--------------------------------------------------
# @変数
#--------------------------------------------------
# Define
#------------------------------
class C3
#  attr_accessor @x1  # : warning: instance variable @x1 not initialized
                     # :in `attr_accessor': nil is not a symbol (TypeError)
                     # :in `'
                     # :in `
'
end


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

RubyGold試験の自習問題/GoldOther012:privateの再定義

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther012.rb
# ■privateの再定義
# → サブクラスで再定義したらプライベート属性もなくなる
#------------------------------------------------------------


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

  def met1
    met2
  end

  private
  def met2
    "Cls1-met2"
  end

end

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

  def met2
    "Cls2-met2"
  end

end

#--------------------------------------------------
# Execute
#------------------------------
puts Cls1.new.met1  #=> Cls1-met2
puts Cls2.new.met1  #=> Cls2-met2
puts Cls2.new.met2  #=> Cls2-met2  # publicとして使える


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

RubyGold試験の自習問題/GoldOther011:init

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther011.rb
# ■init
#------------------------------------------------------------

#--------------------------------------------------
# Define
#------------------------------
class Cls1
  def initialize(s)
    puts "Cls1:" + s
  end
end

class Cls2 < Cls1
end

class Cls3 < Cls1
  def initialize(s)
    puts "Cls3:" + s
    super
  end
end


#--------------------------------------------------
# Execute
#------------------------------
Cls1.new("c1")  #=> Cls1:c1
Cls2.new("c2")  #=> Cls1:c2
Cls3.new("c3")  #=> Cls3:c3, Cls1:c3


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

RubyGold試験の自習問題/GoldOther010:自分のクラスメソッドを実行

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther010.rb
# ■自分のクラスメソッドを実行
#------------------------------------------------------------


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

  def self.foo1
    foo1
  end

  def foo1
    self.foo1
  end

end

#--------------------------------------------------
# Execute
#------------------------------
puts Cls1.foo1  #=> : stack level too deep (SystemStackError)


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

RubyGold試験の自習問題/GoldOther009:定数

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther009.rb
# ■定数
#------------------------------------------------------------

#------------------------------
CONST = "top"

#----------
module Mdl1
  CONST = "mdl1"
  CONST2 = "mdl2"

  def foo2
    CONST
  end

  def foo3
    CONST2
  end

end

#----------
class Cls1
  CONST = "cls1"
  def foo1
    CONST
  end

  class Cls11
    CONST = "cls11"
    def foo11
      CONST
    end
    def foo111
      Cls1::CONST
    end
  end

  class Cls12
    def foo12
      CONST
    end
  end


end

#----------
class Cls2 < Cls1
  CONST = "cls2"
end

#----------
class Cls3
  include Mdl1
end

#----------
class Cls4 < Cls1
  include Mdl1
end

#----------
class Cls5 < Cls1
  include Mdl1
  CONST = "cls5"
end

#----------
class Cls6 < Cls1
  include Mdl1
  CONST = "cls61"
  CONST2 = "cls62"
end

#------------------------------
puts "---"
puts "CONST                   -> " + CONST
puts "::CONST                 -> " + ::CONST
puts "---"
puts "Cls1::CONST             -> " + Cls1::CONST
puts "Cls1::Cls11::CONST      -> " + Cls1::Cls11::CONST
puts "Cls1.new.foo1           -> " + Cls1.new.foo1
puts "Cls1::Cls11.new.foo11   -> " + Cls1::Cls11.new.foo11
puts "Cls1::Cls11.new.foo111  -> " + Cls1::Cls11.new.foo111
puts "Cls1::Cls12.new.foo12   -> " + Cls1::Cls12.new.foo12
puts "---"
puts "Cls2::CONST             -> " + Cls2::CONST
puts "Cls2::Cls11::CONST      -> " + Cls2::Cls11::CONST
puts "Cls2.new.foo1           -> " + Cls2.new.foo1
puts "Cls2::Cls11.new.foo11   -> " + Cls2::Cls11.new.foo11
puts "Cls2::Cls11.new.foo111  -> " + Cls2::Cls11.new.foo111
puts "---"
puts "Cls3::CONST             -> " + Cls3::CONST
puts "Cls3.new.foo2           -> " + Cls3.new.foo2
puts "---"
puts "Cls4::CONST             -> " + Cls4::CONST             # mld1が表示される
puts "Cls4.new.foo1           -> " + Cls4.new.foo1           # cls1が表示される  ●mdl1ではない
puts "Cls4.new.foo2           -> " + Cls4.new.foo2           # mld1が表示される
puts "Cls4::Cls11::CONST      -> " + Cls4::Cls11::CONST      # cls11が表示される
puts "Cls4::Cls11.new.foo11   -> " + Cls4::Cls11.new.foo11   # cls11が表示される
puts "Cls4::Cls11.new.foo111  -> " + Cls4::Cls11.new.foo111  # cls1が表示される  ●mdl1ではない。わからんでもない
puts "Cls4::Cls12.new.foo12   -> " + Cls4::Cls12.new.foo12   # cls1が表示される  ●mdl1ではない
puts "---"
puts "Cls5::CONST             -> " + Cls5::CONST             # cls5が表示される
puts "Cls5.new.foo1           -> " + Cls5.new.foo1           # cls1が表示される  ●cls5でもmdl1でもない
puts "Cls5.new.foo2           -> " + Cls5.new.foo2           # mld1が表示される
puts "Cls5::Cls11::CONST      -> " + Cls5::Cls11::CONST      # cls11が表示される
puts "Cls5::Cls11.new.foo11   -> " + Cls5::Cls11.new.foo11   # cls11が表示される
puts "Cls5::Cls11.new.foo111  -> " + Cls5::Cls11.new.foo111  # cls1が表示される  ●mdl1ではない。わからんでもない
puts "Cls5::Cls12.new.foo12   -> " + Cls5::Cls12.new.foo12   # cls1が表示される  ●mdl1ではない

puts "Cls5::CONST2            -> " + Cls5::CONST2            # mdl2
puts "Cls5.new.foo3           -> " + Cls5.new.foo3           # mdl2
puts "---"
puts "Cls6::CONST             -> " + Cls6::CONST             # cls61
puts "Cls6::CONST2            -> " + Cls6::CONST2            # cls62
puts "Cls6.new.foo1           -> " + Cls6.new.foo1           # cls1
puts "Cls6.new.foo2           -> " + Cls6.new.foo2           # mdl1
puts "Cls6.new.foo3           -> " + Cls6.new.foo3           # mdl2


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

RubyGold試験の自習問題/GoldOther008:SuperのSuperあるか

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther008.rb
# ■SuperのSuperあるか
# → ない。また、superが親クラスを指すワケでもない
# → ●親クラスのメソッドを使用するには?
#------------------------------------------------------------


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

  def foo
    "Cls1#foo"
  end

end

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

  def foo
    "Cls2#foo"
  end

  def bar
    "Cls2#bar"
  end

end

#------------------------------
class Cls3 < Cls2

  def foo
    super.super + "Cls3#foo"
  end

  def bar
    super.foo
  end

end


#--------------------------------------------------
# Execute
#------------------------------
#puts Cls3.new.foo  # :in `foo': undefined method `super' for "Cls2#foo":String (NoMethodError)
                    # :in `
'
#puts Cls3.new.bar   # :in `bar': undefined method `foo' for "Cls2#bar":String (NoMethodError)
                    # :in `
'


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

RubyGold試験の自習問題/GoldOther007:モジュールにSuper使えるか

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther007.rb
# ■モジュールにSuper使えるか
# → モジュールでsuper使える
#------------------------------------------------------------


#--------------------------------------------------
# Define
#------------------------------
module Mdl1

  def foo
    super + "Mdl1#foo"
  end

end

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

  def foo
    "Cls1#foo"
  end

end

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

  include Mdl1

end

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

end


#--------------------------------------------------
# Execute
#------------------------------
puts Cls1.new.foo  #=> Cls1#foo
puts Cls2.new.foo  #=> Cls1#fooMdl1#foo
puts Cls3.new.foo  #=> Cls1#foo



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

RubyGold試験の自習問題/GoldOther006:モジュールファンクションはMix-Inされない

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther006.rb
# ■モジュールファンクション
# → モジュールファンクションはMix-Inされない
#------------------------------------------------------------


#--------------------------------------------------
# Define
#------------------------------
module Mdl1

  def mFoo
    "mFoo"
  end

  module_function
  def fncFoo
    "fncFoo"
  end

end

#------------------------------
class Cls1
  include Mdl1
end

#------------------------------
class Cls2
  extend Mdl1
end


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


#puts Mdl1.mFoo    # :in `
': undefined method `mFoo' for Mdl1:Module (NoMethodError)
puts Mdl1.fncFoo  #=> fncFoo

puts Cls1.new.mFoo    #=> mFoo
#puts Cls1.mFoo        # :in `
': undefined method `mFoo' for Cls1:Class (NoMethodError)
#puts Cls1.new.fncFoo  # :in `
': private method `fncFoo' called for # (NoMethodError)

#puts Cls2.new.mFoo  # :in `
': undefined method `mFoo' for # (NoMethodError)
puts Cls2.mFoo      #=> mFoo
#puts Cls2.fncFoo    # :in `
': private method `fncFoo' called for Cls2:Class (NoMethodError)



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

RubyGold試験の自習問題/GoldOther005:putsをputs

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

→ 「他の問題


#! ruby -Ks

#------------------------------------------------------------
# GoldOther005.rb
# ■putsをputs
#------------------------------------------------------------

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

  def foo
    '[Cls1#foo]'
  end

  def fooP
    p '[Cls1#fooP]'
  end

  def fooPuts
    puts '[Cls1#fooPuts]'
  end

end


#--------------------------------------------------
# Execute
#------------------------------
puts "----------"
puts Cls1.new.foo      #=> [Cls1#foo]
puts "----------"
puts Cls1.new.fooP     #=> "[Cls1#fooP]", [Cls1#fooP]
puts "----------"
puts Cls1.new.fooPuts  #=> [Cls1#fooPuts]


#------------------------------------------------------------
# END
#------------------------------------------------------------
【;ω| もくじ |ω;】
−−−−−−−−−−
■ゲームプレイ日記
−−−−−−−−−−
■双子の娘
−−−−−−−−−−
■IT関連
−−−−−−−−−−
■創作物
−−−−−−−−−−
■その他
−−−−−−−−−−
【;ω| amazon |ω;】














  • ライブドアブログ