💎
Ruby Gold 練習問題1回目の振り返り
こんにちは。WEBエンジニアのホリさんです。
今回が第4回目の記事です。
概要
Ruby Goldの問題1回目を解いて、初めて知ったことについて共有させていただきます。
-l オプション
-lはファイルはロードするパスを指定するオプションのことです。
機能としては以下があります。
指定したディレクトリは$LOAD_PATH変数($:)に追加される
引数で渡したディレクトリはrequireやlodaメソッドが呼ばれたときに検知される
**params
** paramsは、明示的に定義したもの以外の引数をHashオブジェクトで受け取ることができる
def test(x:, y: 2, params: **)
puts "#{x},#{y},#{params[:z]}"
end
test x: 1, z: 3
=> "1,2,3"
ancestors
ancestorsは、クラス、モジュールの優先順位で配列に格納される
module test1
end
module test2
end
class Cls1
include test1
end
class Cls2 < Cls1
p self.ancestors
include test2
end
=> [Cls2,Cls1,test1,object,kernel,BasicObject]
using
refineで定義したメソッドを実行するにはusingを指定する必要がある
class Test
def hoge
puts "A"
end
end
module Sample
refine Test do
def hoge
puts "B"
end
end
end
test = Test.new
test.hoge
using Sample
test.hoge
=>
"A"
"B"
resume
resumeメソッドはインスタンスを生成したあとにクラス.yieldで定義した引数の値を返します。
test = Test.new{ Test.yield "foo" }
puts f.resume
=> "foo"
dataメソッド
<< 1ヶ月後
>> 1ヶ月後
+ 1日後
- 1日前
require "data"
date = Data.new(2000, 10, 10)
puts date << 1
=> 2000-11-10
まとめ
標準添付ライブラリの知識が不足していたことに気づきました。
現場で使うことがあるか分からないけど、選択肢を増やしておくと様々なwebアプリケーションに対応できるようになると思うので、日々アップデートしていきます。
なんとなく使っている技術も細かいルールや気をつけるべきポイントを知った上で、使うような癖付けをしていこうと思った。
参考URL
Discussion