这是红宝石功能:
def long_reference_name
if suite?
"#{recursive_access} #{recursive_view} "
else
""
end + reference_name
end
我不明白这是什么意思:
end + reference_name
这是红宝石功能:
def long_reference_name
if suite?
"#{recursive_access} #{recursive_view} "
else
""
end + reference_name
end
我不明白这是什么意思:
end + reference_name
不是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?
。
这是+
对if-else-end
语句结果调用的方法。
作为一个例子,见下文:
m = if true
"abc"
else
"xyz"
end + "mm"
# => "abcmm"
其他答案解释了如何阅读它。他们没有检查模仿不是一件好事。
可以使用以下方法干净地为条件测试的结果添加一些内容:
def foo(s)
ret = if (s == "something")
'some text'
else
''
end
ret + reference_name
end
这是额外的一行,同样快,但更容易理解。
从技术上和句法上讲,另一种方式是可行的,但它不是惯用的,并且会影响维护。