ruby函数中'end +'的含义是什么?

时间:2013-06-23 21:29:12

标签: ruby

这是ruby函数:

def long_reference_name
  if suite?
    "#{recursive_access} #{recursive_view} "
  else
    ""
  end + reference_name
end

我不明白其含义是什么:

end + reference_name

3 个答案:

答案 0 :(得分:12)

不是end + reference_name,而是<previous expression> + reference_name,其中<previous_expression>是:

if suite?
 "#{recursive_access} #{recursive_view} "
else
""
end

因为块是带有Ruby值的表达式。

换句话说,您有"#{recursive_access} #{recursive_view} " + reference_name"" + reference_name,具体取决于suite?的值。

答案 1 :(得分:4)

这是+语句结果调用的方法if-else-end

作为一个例子见下文:

m = if true  
  "abc"
else
  "xyz"
end + "mm" 
# => "abcmm"

答案 2 :(得分:2)

其他答案解释了如何阅读它。他们没有检查模仿是不是一件好事。

可以使用以下方法干净地添加条件测试结果:

def foo(s)
  ret = if (s == "something")
    'some text'
  else
    ''
  end
  ret + reference_name
end

这是额外的一行,同样快,但更容易理解。

从技术上和语法上来说,另一种方式是有效的,但它并不像惯用因素那样影响维护。