如何理解extract_options!

来源:互联网 发布:客观评价张学良知乎 编辑:程序博客网 时间:2024/05/16 19:55

当你在阅读程序的时候,你经常碰到下面的程序


def my_method(*args)  options = args.extract_options!  puts "Arguments:  #{args.inspect}"  puts "Options:    #{options.inspect}"end

有可能很多人看不多


现在给两个列子


1.   

my_method(1, 2)# Arguments:  [1, 2]# Options:    {}


2. 

my_method(1, 2, :a => :b)# Arguments:  [1, 2]# Options:    {:a=>:b}


现在看懂了吗? 不过一定要记住这个在ruby中没有,而是存在于rails中。 



好了,让我们用这个简单的功能写个程序吧


def g_html(sym, *args)
   options = args.extract_options!
   if options[:class]
     "<#{sym} class='#{options[:class]}'>#{args.first}</#{sym}>"
   else
     "<#{sym}>#{args.first}</#{sym}>" if args.first.present?
   end
 end



原创粉丝点击