2013-04-30 129 views
4

我有一個操縱字符串的函數;但是,有時我的輸入不是字符串。例如,它可能是一個路徑對象。我需要將它轉換爲字符串,因爲我想調用方法如.gsub測試一個對象是否是一個字符串

我的問題似乎有點簡單,但我在討論將對象轉換爲字符串的最佳方法。

我目前有兩種選擇:

str = str.to_s unless str.is_a? String 

str = str.to_s 

第二種方法要簡單得多,但第一種方法實際上描述發生了什麼事情。我想知道哪兩種方法更好用,或者有更好的方法,我沒有想到?

+2

定義'String#to_s'的事實是Ruby開發人員的一個消息,你應該使用第二個消息。像這樣的情況是'String#to_s'會有用的唯一情況。 – sawa 2013-04-30 19:55:24

回答

4

我寧願第二個。

如果不是字符串,我寧願參數/變量未被命名爲str

命名它str意味着字符串,但代碼看起來很愚蠢,而且很難推理。

3

我更喜歡第二個。它更短,更簡單,並且描述了你想要的東西(任何程序員都會明白什麼將會成功)。在性能上也沒有顯着差異。

1

第二種方法毫不猶豫。

第一個錯綜複雜,並沒有真正增加任何意義。

相關問題