我有一个text_parts变量,填充如下:
text_parts = r[:database_field].split('.')
text_parts现在有一个单词数组,这些单词实际上是按数据库中的句点分割的。以下陈述在红宝石中意味着什么?我在旧的代码库中找到它并需要解释它的作用。
text_parts[-3].nil? ? "" : text_parts[-1*text_parts.length..-3].join('.')
提前谢谢。
答案 0 :(得分:2)
从第一个元素到{3}的元素从最后一个元素到第三个元素,并将它们与text_parts
连接起来(如果"."
少于三个元素,则返回一个空字符串)。
显然不是由(任何有资格成为专业人士)的人编写的代码。这非常糟糕。
text_parts
的所有元素都是字符串,因此您无需考虑某些元素为text_parts
或nil
的情况。因此,您不需要使用false
。条件可以是nil?
,两个案例都已切换。text_parts[-3] ? ... : ...
应该简单地写成-1*text_parts.length
。0
小于3,那么text_parts
将是一个空数组,因此首先不需要条件。简而言之,更好的方法是:
text_parts[0..-3]