ActiveSupport::CoreExtensions 学习笔记(一)
1 ActiveSupport::CoreExtensions::Array::Conversions1:to_formatted_s(fromate=:default)
如果不指定参数,会把数组的每一个元素连接起来。
>> %w(a b).to_formatted_s=> "ab"
如果指定了:db参数就会把数组元素的id用逗号连接输出,如果数组为空就输出为null
>> %w(a b).to_formatted_s(:db)=> "37846660,37846650"
2:to_param()
把数组用'/'连接起来
>> %w(blog index).to_param()=> "blog/index"
3:to_sentence(options = {}) 包含两个参数
:connector: 如果数组的长度大于二用指定的字符去连接最后一个字符 (default: "and")
:skip_last_comma: 设置为true 返回形式用 "a, b and c" 替换 "a, b, and c". (default: false)
>> %w(blog index).to_sentence=>"blog, and index">> %w(blog index).to_sentence(:connector=>"or",:skip_last_comma=>true)=>"blog or index"
4:to_xml(options = {})
:root 指定根标签()
:children 指定子标签,如果未指定,就为root的单数形式
:indent 指定每层缩近的大小
:builder 创建一个Builder::XmlMarkup 对象
:dasherize 是否把标签名称换下化线转换为横线 <a_test> =><a-test> 默认为转换
:skip_instruct 是否忽略instruct,默认会包含
>> ['blog_a'=>['b'=>'c']].to_xml(:skip_instruct=>true)=> "<records>\n<record>\n <blog-a>\n <blog-a>\n <b>c</b>\n </blog-a>\n </blog-a>\n</record>\n</records>\n"
2 ActiveSupport::CoreExtensions::Array::Grouping
1:in_groups_of(number, fill_with = nil) {|group| ...}
把数组分割成每组含number个元素的若干子数组。如果最后一个子数组的元素不够,
用fill_with指定的字符去替换。如果fill_with指定为false,则不会去补位空的元素。、
>> %w(1 2 3 4 5 6 7).in_groups_of(3){|g| p g}["1", "2", "3"]["4", "5", "6"]["7", nil, nil]>> %w(1 2 3 4 5 6 7).in_groups_of(3,false){|g| p g}["1", "2", "3"]["4", "5", "6"]["7"]
2:split(value = nil, &block)
通过一个给定的value与数组里的元素对比,把value前后的元素分割子数组。还可以通过一个block去计算分割
>> .split {|i| i%3==0} => [, , ] 查看源码 def split(value=nil,&block) block ||=Proc.new{|e| e==value} inject([[]]) do |result, element| if block.call(element) results<<[] elseresults.last<<element end results end enf 所以 >> .split(3) => [, ] 等于 >> .split {|i| i==3} => [, ]
3 ActiveSupport::CoreExtensions::Hash
1:to_xml(options = {})
2:diff(h2)
删除给定参数Hash含相同的元素,返回一个新的数组。
>> {'a'=>'100','b'=>'200','c'=>'300'}.diff({'b'=>'200'})=> {"a"=>"100", "c"=>"300"}
3:assert_valid_keys(*valid_keys)
判断HASH的键是否只在给定的参数内,如果超出会报错,并把多余的键打印出来
>> {'a'=>'100','b'=>'200',1=>'300'}.assert_valid_keys("a","b")ArgumentError: Unknown key(s): 1
4:stringify_keys!()
强制把Hash的每一个键转换为字符,
>> {'a'=>'100','b'=>'200',1=>'300'}.stringify_keys!=> {"a"=>"100", "b"=>"200", "1"=>"300"}
5:symbolize_keys!()
强制把所有的键转换为symbols
>> {'a'=>'100','b'=>'200',1=>'300'}.symbolize_keys!=> {:b=>"200", nil=>"300", :a=>"100"}
6:reverse_merge!(other_hash)
用指定的值去替换默认的值
>> {'a'=>'100',1=>'300'}.reverse_merge! 'b'=>"400"=> {"a"=>"100", "b"=>"400", 1=>"300"}
页:
[1]