`
fantaxy025025
  • 浏览: 1249623 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Ruby_Rails_细节拾疑

 
阅读更多

 

 

# 方法接受可变长的参数

 

def m_a(*a)
  puts a.inspect
end

m_a(1, 2, 3)

a = [4,5,6]
m_a(a) #输出?
m_a(*a) #输出?

 输出:

 

[1, 2, 3]

[[4, 5, 6]]

[4, 5, 6]

[{:c=>3, :a=>1, :b=>2}]

 

 

# ||= 的使用

class JuneLee
  def a=(v)
    puts "set a=#{v}"
    @a = v
  end

  def a
    puts "get a=#{@a}"
    @a
  end
end

june = JuneLee.new
june.a ||= 200

  输出:

 

get a=

set a=200

结论: a.b.c.d ||= 200 等价于 a.b.c.d = a.b.c.d || 200 执行了两次查询

这表示一个潜在的问题,如果june.a执行时间比较长,就不该这么做,多执行一次

 

 

   补充中。。。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics