0

我有一个 text_parts 变量,填充如下:

text_parts = r[:database_field].split('.')

text_parts 现在有一个单词数组,这些单词实际上在数据库中按句点分隔。以下语句在 ruby​​ 中是什么意思?我在旧代码库中找到了它,需要解释它的作用。

text_parts[-3].nil? ? "" : text_parts[-1*text_parts.length..-3].join('.')

先感谢您。

4

1 回答 1

2

它获取text_parts从第一个到第三个的元素,并将它们连接起来"."(如果text_parts元素少于三个,则返回一个空字符串)。

这显然不是由(任何有资格的)专业人士编写的代码。这很糟糕。

  • 首先,由于确保 的所有元素text_parts都是字符串,因此您不需要考虑某些元素是nilor的情况false。因此,您不需要使用nil?. 条件可以是text_parts[-3] ? ... : ..., 两种情况切换。
  • 其次,-1*text_parts.length应该是简单的写法0
  • 第三,如果text_parts短于三,那么text_parts[0..-3]将是一个空数组,因此首先不需要条件。

简而言之,一个更好的写法是:

text_parts[0..-3].join(".")
于 2013-05-06T19:38:18.500 回答