Ruby'de "Gereksinim" Yöntemi

Yeniden kullanılabilir bileşenler, diğer programlarda kolayca kullanılabilen bileşenler oluşturmak için, bir programlama dilinin çalışma zamanında bu kodu sorunsuz bir şekilde içe aktarması gerekir. İçinde Yakut, gerektirir yöntemi başka bir dosyayı yüklemek ve tüm dosyayı yürütmek için kullanılır ifadeleri. Bu, tüm sınıfı ve yöntem dosya tanımları. Dosyadaki tüm ifadeleri basitçe yürütmenin yanı sıra, requir yöntemi aynı zamanda hangi dosyaların daha önce gerekli olduğunu izler ve bu nedenle iki kez bir dosya gerektirmez.

'Zorunlu' Yöntemi Kullanma

Require yöntemi, gereken dosyanın adını bir sicim, tek bir argüman olarak. Bu, dosyanın yolu gibi, ./lib/some_library.rb veya kısaltılmış bir ad (ör. some_library. Argüman bir yol ve tam dosya adı ise, requir metodu orada dosyayı arayacaktır. Ancak, bağımsız değişken kısaltılmış bir adsa, requir yöntemi bu dosya için sisteminizde önceden tanımlanmış birkaç dizin içinde arama yapar. Kısaltılmış adın kullanılması, request yöntemini kullanmanın en yaygın yoludur.

instagram viewer

Aşağıdaki örnek, requ ifadesinin nasıl kullanılacağını gösterir. Dosya test_library.rb ilk kod bloğundadır. Bu dosya bir mesaj yazdırır ve yeni bir sınıf tanımlar. İkinci kod bloğu dosya test_program.rb. Bu dosya test_library.rb oradaquetemethod kullanarak dosya ve yeni bir oluşturur TestClass nesne.

"test_library dahil" ifadesini koyar
sınıf TestClass
def başlangıç ​​değeri
"TestClass nesnesi oluşturuldu"
son
son
#! / usr / bin / env yakut
'test_library.rb' gerektirir
t = TestClass.new

İsim Çatışmalarından Kaçının

Yeniden kullanılabilir bileşenler yazarken, herhangi bir sınıf veya yöntem dışında veya $ önek. Bunun amacı "ad alanı kirliliğiMsgstr "Çok fazla ad bildirirseniz, başka bir program veya kütüphane aynı adı bildirebilir ve bir ad çakışmasına neden olabilir. Tamamen ilgisiz iki kütüphane birbirlerinin değişkenlerini yanlışlıkla değiştirmeye başladığında, işler rastgele görünür. Bu, izlemesi çok zor bir hatadır ve sadece bundan kaçınmak en iyisidir.

Ad çakışmalarını önlemek için kitaplığınızdaki her şeyi bir modül Beyan. Bu, kişilerin sınıflarınıza ve yönteminize aşağıdaki gibi tam bir adla başvurmalarını gerektirir: MyLibrary:: my_method, ancak isim çakışmaları genellikle gerçekleşmeyeceğinden buna değer. Tüm sınıf ve yöntem adlarınızın global kapsamda olmasını isteyen insanlar için bunu Dahil etmek Beyan.

Aşağıdaki örnek, önceki örneği tekrarlar, ancak her şeyi bir Benim kutuphanem modülü. İki versiyonu my_program.rb verilmiştir; kullanan Dahil etmek ifadesi ve bir değil.

"test_library dahil" ifadesini koyar
modül MyLibrary
sınıf TestClass
def başlangıç ​​değeri
"TestClass nesnesi oluşturuldu"
son
son
son
#! / usr / bin / env yakut
'test_library2.rb' gerektirir
t = MyLibrary:: TestClass.new
#! / usr / bin / env yakut
'test_library2.rb' gerektirir
MyLibrary'i dahil et
t = TestClass.new

Mutlak Yollardan Kaçının

Yeniden kullanılabilir bileşenler genellikle hareket ettiğinden, en iyi aramalarınızda mutlak yollar kullanmamak da en iyisidir. Mutlak yol şöyle bir yoldur /home/user/code/library.rb. Çalışması için dosyanın tam olarak bu konumda olması gerektiğini fark edeceksiniz. Komut dosyası hiç taşındıysa veya ana dizininiz değişirse, bu ifade ifadesi çalışmayı durduracaktır.

Mutlak yollar yerine, genellikle ./lib dizinini Ruby programınızın dizinine yerleştirin. ./lib dizini $ LOAD_PATH gerektiren yöntemin Ruby dosyalarını aradığı dizinleri depolayan değişken. Bundan sonra, eğer dosya my_library.rb lib dizininde saklanır, basit bir programa programınıza yüklenebilir 'my_library' iste Beyan.

Aşağıdaki örnek önceki ile aynıdır test_program.rb örnekleri. Ancak, test_library.rb dosyada saklanır ./lib dizin ve yukarıda açıklanan yöntemi kullanarak yükler.

#! / usr / bin / env yakut
$ LOAD_PATH << './lib'
'test_library.rb' gerektirir
t = TestClass.new
instagram story viewer