...

Ruby技術者認定試験に向けての個人的メモ #1

Ruby技術者認定試験

ブログ主

ここに文章
ブログ主
どうもおはようポテトです

最近学校の勉強と並行して、Ruby技術者認定試験に向けての勉強を独学で進めております。

その中で躓いたところや気になった点を記事としてだらだらメモしていこうと思います

prependメソッドについて

module Mod
  def func
    p "ソロモンちゃん、これはモジュールの出力"
  end
end

class C1
  include Mod
  def func
    p "ソロモンちゃん、これはfunc1の出力"
  end
end

class C2
  prepend Mod
  def func
    p "ソロモンちゃん、これはfunc2の出力"
  end
end

A=C1.new.func() #=>"ソロモンちゃん、これはfunc1の出力"
B=C2.new.func() #=>"ソロモンちゃん、これはモジュールの出力"

過去問で間違えたので。prependメソッドでモジュールを指定すると、includeと違って同じ名前のメソッドがあった場合、モジュールの方のメソッドを優先する…と。

compactメソッドとuniqメソッド

array1=["ソロモンちゃん","ゆんゆん",nil,"ソロモンちゃん"]


p array1.compact #=>["ソロモンちゃん", "ゆんゆん", "ソロモンちゃん"]
p array1 #=>["ソロモンちゃん", "ゆんゆん", nil, "ソロモンちゃん"]

p array1.uniq #=>["ソロモンちゃん", "ゆんゆん", nil]
p array1 #=>["ソロモンちゃん", "ゆんゆん", nil, "ソロモンちゃん"]

配列においてnilである要素を取り除いてくれるuniqメソッド、値が重複している要素を取り除いてくれるcompactメソッド、これらは両方非破壊的メソッドである…と。

これも間違えたやつ…

 

再定義できない演算子

 

=?:..not
&&and||or:

「&」と「&&」…どっちが再定義できないんだっけとよくなるので。

alias式とundef式

class C

  def func1
    p "fuc1だ"
  end

  def func2
    p "func2だ"
  end

  alias :func3 :func2
  undef :func1

end

C.new.func3() #=>"func2だ"
C.new.func2() #=>"func2だ"
C.new.func1() #=>エラー

alias式はあくまで”別名をつける”だけで、元のメソッドを消すわけではないんですよね…なのでちゃんと「func2だ」と2回出力されていると…

 

 

今回は以上になります。では⸝⸝- ̫ -⸝⸝


参考になったらシェアしよう

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA