2014-10-28 86 views
0

我在寫一個方法來將一個字符串和整數數組合成一個句子。它必須大寫第一個字母,在單詞之間加上空格,並在最後放置一段時間。以下是我寫的:將一串字符串組合成一個句子的重構方法

def sentence_maker(y) 
    y[0].capitalize! 
    y[-1]="#{y[-1]}." 
    sentence = y.join(" ") 
end 

下面是一個陣列的一個例子,將獲得通過:

["alaska", "has", "over", 586, "thousand", "miles"] 

什麼是這種方法的重構? 在此先感謝您的幫助。紅寶石2.1.1p76

+4

這個問題似乎是題外話,因爲它是關於重構的,應該在[codereview.se]上提問。 – 2014-10-28 21:58:00

回答

2

爲什麼不這樣?:

words = ["alaska", "has", "over", 586, "thousand", "miles"] 
words.join(' ').strip.capitalize << '.' #=> "Alaska has over 586 thousand miles." 

或字符串插值:

"#{words.join(' ').strip.capitalize}." #=> "Alaska has over 586 thousand miles." 

strip將刪除前導/字符串結尾的空格(如果在第一個或最後一個任何數組的值)。

UPDATE:你可以用這個作爲陣列的實例方法:

class Array 
    def to_sentence 
    "#{join(' ').strip.capitalize}." 
    end 
end 

words = ["alaska", "has", "over", 586, "thousand", "miles"] 
words.to_sentence # => "Alaska has over 586 thousand miles." 
+0

你是如何得到數組最後一個值的時間的? – theartofbeing 2014-10-28 20:11:06

+0

對不起,我發佈這個答案時測試了一些代碼。 – Surya 2014-10-28 20:13:25

1

你可以讓你的代碼一大堆可讀:

def sentence_maker(array) 
    array.first.capitalize! 
    array.last.concat('.') 
    array.join(' ') 
end 
+0

我在期間之前沒有看到空格。在這裏使用Ruby 2.0。 – daremkd 2014-10-28 20:34:13

+0

@daremkd:假設最後一個值是:''miles「'而不是''miles」',那麼在連接''。'之前,您必須刪除該空格。 – Surya 2014-10-28 20:36:54

相關問題