这是ruby函数:
def long_reference_name
if suite?
"#{recursive_access} #{recursive_view} "
else
""
end + reference_name
end
我不明白其含义是什么:
end + reference_name
答案 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
这是额外的一行,同样快,但更容易理解。
从技术上和语法上来说,另一种方式是有效的,但它并不像惯用因素那样影响维护。