2010-07-21 100 views
2

我愛Ruby,過去幾年這是我的選擇語言。爲什麼Ruby有這麼多的冗餘?

但是,即使在我開始學習它的時候,我常常會遇到幾種方法來做同樣的事情(或者相同的事情)。我給幾個例子:

  • 方法通常有別名,所以你總是費心去選擇最適當的,流行或普遍接受的替代
  • andor,除了&&|| - 只要看看有多少混亂優先差異當中引起
  • for關鍵字,使用幾乎完全由沒有經驗的非原生Ruby開發者

什麼這種設計決定背後的理由是什麼?他們(馬茨?)是否相信這種語言會更容易被採用,因此更受歡迎?

回答

7

紅寶石是Perl的啓發,一個重要的Perl的理念是「不止一種方法去做一件事」,即重新編號是很好的,因爲它們給程序員更多的自由(並且增加了他們想要的功能在他們給予的名字下可用的可能性 - 不僅在一個之下)。你的決定是否真的是一件好事。

1

當馬茨寫紅寶石時,他試圖遵循'最小驚奇原則'。通常這意味着會有多種方法來做同樣的事情,例如通過使用方括號或插入方法分配給數組。我喜歡它,因爲我發現,不是試圖記住在哪種情況下使用哪個確切的名稱(我總是用一段時間來暫停Java中的大小和長度),我只是寫出看起來合乎邏輯的東西,通常它會工作。閱讀代碼時,使用不同的名稱通常不是問題,因爲名稱通常是不言自明的。所以,我不擔心哪個最適合或最受歡迎,我選擇當時最合乎邏輯的方法。

Matz也受Perl的啓發,它有'不止一種方式來做'作爲它的口號。

我不相信Matz擔心什麼是最受歡迎的,他只是想寫他想用的語言。

我不會試圖解釋和VS & &雖然...

1

請注意,and&&儘管相似,但具有不同的優先順序。
a = b && c#=>等於a =(b和c)。 a被設置爲布爾值。
a = b and c#=相當於(a = b)和c。 a被設置爲b,而expression是一個布爾值。

有多種方法可以做到這一點,但它們之間可能存在細微的差異。 (更新,剛剛注意到你提到了你的問題中的優先級區別......對不起,這裏沒有什麼可看的。)

相關問題