我有一个 text_parts 变量,填充如下:
text_parts = r[:database_field].split('.')
text_parts 现在有一个单词数组,这些单词实际上在数据库中按句点分隔。以下语句在 ruby 中是什么意思?我在旧代码库中找到了它,需要解释它的作用。
text_parts[-3].nil? ? "" : text_parts[-1*text_parts.length..-3].join('.')
先感谢您。
我有一个 text_parts 变量,填充如下:
text_parts = r[:database_field].split('.')
text_parts 现在有一个单词数组,这些单词实际上在数据库中按句点分隔。以下语句在 ruby 中是什么意思?我在旧代码库中找到了它,需要解释它的作用。
text_parts[-3].nil? ? "" : text_parts[-1*text_parts.length..-3].join('.')
先感谢您。
它获取text_parts
从第一个到第三个的元素,并将它们连接起来"."
(如果text_parts
元素少于三个,则返回一个空字符串)。
这显然不是由(任何有资格的)专业人士编写的代码。这很糟糕。
text_parts
都是字符串,因此您不需要考虑某些元素是nil
or的情况false
。因此,您不需要使用nil?
. 条件可以是text_parts[-3] ? ... : ...
, 两种情况切换。-1*text_parts.length
应该是简单的写法0
。text_parts
短于三,那么text_parts[0..-3]
将是一个空数组,因此首先不需要条件。简而言之,一个更好的写法是:
text_parts[0..-3].join(".")