說明性示例
在文件b.rb中,我有以下兩個類:Dog和Cat。爲什麼紅寶石'要求'不是更細粒度?
在Ruby中,使用在文件b.rb定義的類犬,我有權要求b.rb:
require 'b'
puts Dog.new.bark
但是,即使我並不需要有貓,它被定義因爲所需文件中的所有類都已加載。
問題
所以我的問題是:爲什麼沒有在Ruby中,要求的文件只有部分的方法嗎?
有沒有理由認爲它在Ruby中不被認爲是必要的,或者它是否包含在語言未來的某些路線圖中?
在蟒蛇他們有from module import MyClass
形式,它可以讓導入文件選擇要導入的內容,並在世界上的NodeJS他們有module.export
,這讓導入文件選擇什麼樣的出口。
在我看來,Python和NodeJS在這方面更加靈活。在紅寶石的選擇中進行權衡是什麼?
附加問題:如何調用python/nodeJS機制(選擇性導入?)?
這就是'require'在Ruby中的工作方式。 就我個人而言,我只是在dog.rb中放入'Dog'類,並在cat.rb中放入'Cat'。這是非常直觀的,並鼓勵文件不要變得凌亂。 – progfan
我認爲在一個文件中有多個類是絕大多數時候是不好的做法 - 或者至少不遵循常見的Ruby約定。 – spickermann
這只是一種不同的哲學。 Python包往往有幾個腳本,裏面有很多類。 Ruby寶石往往有許多腳本,每個腳本最多隻有一個類。與Ruby相比,Python的動態性更強,更加明確,因此文本編輯器和IDE可以更輕鬆地分析Python代碼。在Python定義的任何地方跳過類定義更容易。使用Ruby,可以有很多動態類和方法定義,以至於文本編輯器需要知道基礎約定。 –