2013-05-06 61 views
0

我有獲取填充如下一個text_parts變量:關於-array指標和Ruby代碼混淆範圍

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

的text_parts現在有實際上是由數據庫時段分開單詞的數組。下面的語句在Ruby中意味着什麼?我發現它在舊的代碼庫中,需要解釋它的功能。

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

在此先感謝您。

+1

把它分解成部分你確實是理解;然後就每個特定部分制定一個問題。如果你能告訴我們你對此有什麼樣的想法是有幫助的,如果有的話。也嘗試搜索引擎;如果你想搜索像'?'這樣的標點符號,可以使用http://www.symbolhound.com。 – echristopherson 2013-05-06 19:44:21

回答

2

它從從第一個到最後一個的第三個元素,並將它們與"."(如果text_parts少於三個元素,則它返回一個空字符串)加入它們。

這顯然不是由(專業人士)編寫的代碼。太糟糕了。

  • 首先,因爲它確保的text_parts所有元素都是字符串,你不需要考慮,其中一些元素是nilfalse箱子。因此,您不需要使用nil?。條件可以是text_parts[-3] ? ... : ...,切換兩種情況。
  • 二,-1*text_parts.length應簡寫爲0
  • 第三,如果text_parts超過三個短,則text_parts[0..-3]將是空數組,所以條件在第一個地方是沒有必要的。

總之,一個更好的方式來寫是這樣的:

text_parts[0..-3].join(".") 
+1

方式更加貼切 - 問題代碼提醒我PHP。 – fotanus 2013-05-06 19:50:53