1.to_proc
class Array
def to_proc
proc { |receiver| receiver.send *self }
end
end
[ 'Hello', 'Goodbye' ].map &[ :+, ' BeiJing!' ]
#=> ["Hello BeiJing!", "Goodbye BeiJing!"]
receiver -> [ 'Hello', 'Goodbye' ]
*self -> [ :+, ' BeiJing!' ]
2.map(&:key)
order_records = OrderRecord.all(:all, :limit => 10)
order_records.map(&:order_no)
#=> ["20140627141050-5096zG", "20140627143533-90bm9v", "20140627143648-2sJQxR", "20140627161046-UE0y07", "20140627161456-16GGT1", "20140627161707-58Lc3t", "20140627173915-0mI1Ji", "20140627175248-31YTtk", "20140627180802-s487cX", "20140717112957-eQ993g"]
arr = '100+100+200+100'
arr.split('+').map(&:to_i)
3.hash = JSON.parse content.gsub!('=>', ':')
require 'rubygems'
require 'json'
content = %Q({\"credentials\"=>{\"token\"=>\"F538FF45937887AF7246E50928E0961F1\", \"refresh_token\"=>\"6EC400DD7B547B401D29474EA68952145\", \"expires_at\"=>1418310654, \"expires\"=>true}})
hash = JSON.parse content.gsub!('=>', ':')
4.好有創意
http://www.zcool.com.cn/special/znote2014/
5.對 define_method, instance_variable_get,instance_variable_set 的使用
class Activity
attr_reader :data
def self.<< data
new(data).call
end
def self.data_reader *attrs
attrs.each do |attr|
define_method attr do
instance_variable_get("@#{attr}") || \
instance_variable_set("@#{attr}", data[attr.to_sym])
end
end
end
def self.default attr, default
orig_attr = "#{attr}_without_default"
alias_method orig_attr, attr
define_method attr do
send(orig_attr) || default
end
end
def self.set name, value
if value.is_a? Symbol
define_method name do
instance_variable_get("@#{name}") || \
instance_variable_set("@#{name}", send(value) )
end
elsif value.respond_to? :call
define_method name do
instance_variable_get("@#{name}") || \
instance_variable_set("@#{name}", value.call)
end
else
define_method name do
instance_variable_get("@#{name}") || \
instance_variable_set("@#{name}", value)
end
end
end
def initialize(data = {})
@data = data
end
def call
''
end
private
def set(name,value)
instance_variable_set("@#{name}", value)
end
def get_or_set(name)
value = instance_variable_get("@#{name}")
return value if value
value = yield
instance_variable_set("@#{name}", value)
end
end
6. 編輯器
http://hackerwins.github.io/summernote/