ActiveSupport の Array の拡張メソッドを一通り眺めてみた
- extract_options!
引数のオプション部分だけをかえしてくれる. メソッドを定義するときに便利
def options(*args) args.extract_options! end options(1, 2) # => {} options(1, 2, a: :b) # => {:a=>:b}
- to_param
配列からurlを生成できる。join( '/' ) と同じ。
This is used by url_for in Action Pack. Action Packの url_for で使われている。
[36] pry(main)> [1,2,3,4,5].to_param => "1/2/3/4/5"
- to_param のソースコード
# File activesupport/lib/active_support/core_ext/object/to_query.rb, line 40 def to_param collect { |e| e.to_param }.join '/' end
再起的にto_paramが呼ばれるようになっている。 nil#to_paramは active_supportの Nil classに定義されていた
irb(main):022:0* [[1,2,3],1,2,3].to_param => "1/2/3/1/2/3"
- to_query
[21] pry(main)> [1,2,3].to_query( :hoge ) => "hoge%5B%5D=1&hoge%5B%5D=2&hoge%5B%5D=3" [22] pry(main)> URI.unescape( _ ) => "hoge[]=1&hoge[]=2&hoge[]=3"
- code
# File activesupport/lib/active_support/core_ext/object/to_query.rb, line 48 def to_query(key) prefix = "#{key}[]" if empty? nil.to_query(prefix) else collect { |value| value.to_query(prefix) }.join '&' end end
nil#to_paramはわかったけど、 nil#to_query がどこで定義されているのかわからない。
- to_sentence
こんなメソッドあるんだ...
[29] pry(main)> %i( dog cat rat ).to_sentence => "dog, cat, and rat"
- split
指定した index でarrayを分割する. 指定されたindexは含まれない.
p [1,2,3].split(1) # =>[[], [2, 3]] p [1,2,3].split(2) # =>[[1], [3]] p [1,2,3].split(3) # =>[[1, 2], []] p [1,2,3].split(4) # =>[[1, 2, 3]]
- in_groups
指定した数のグループ数に分ける。rubyのeach_sliceとは異なる。
- in_groups_of
指定した数の要素を含むグループに分ける。rubyのeach_sliceとほぼほぼ同じ
よくわからなかったメソッドたち
- to_default_s
- to_formatted_s, to_s