Ruby on Rails奇怪的运算符

时间:2013-09-27 08:28:20

标签: ruby-on-rails ruby ruby-on-rails-3 algorithm

最近,当我从github尝试一个开源项目时,我遇到了这个奇怪的运算符

  layout ->(c) { request.format == :mobile ? "application" : "centered_with_header_with_footer" }

我的问题是,layout ->(c) { }实际解析了什么?

由于

3 个答案:

答案 0 :(得分:2)

这是ruby 1.9中引入的一个新的lambda语法。这相当于以下内容:

layout lambda { |c| request.format == :mobile ? ... }

答案 1 :(得分:2)

我知道lambdas很性感。 :)这是您使用常规方法的角色。

layout :my_layout

private 

def my_layout
  request.format == :mobile ? "application" : "centered_with_header_with_footer"
end

同时确保request.format实际返回符号,因为您要将其与一个符号进行比较。

答案 2 :(得分:0)

这是一个方法layout以lambda文字->(){}作为参数。