2010-12-17 25 views
5

Geçerli bir modüle başvurmak için this gibi herhangi bir anahtar kelime var mı? Örneğin, burada boşluğu ne koymalıyız: Test_Outside Test_Type parametreli başka modüldürGeçerli modüle OCaml'de başvurma

module Test: Test_Type = 
struct 

    module N = Test_Outside(___);; 

end;; 

.

cevap

5

Hayır, yok, ama yapmanız gereken garip.

Sen özyinelemeli modülleriyle garip hileler (temel dil uzantısıdır) yapmak mümkün olabilir, ancak büyük olasılıkla sorun şeyler formüle şekilde olduğunu ve aslında bu tür öz-referansı gerekmez.

her halükarda sonunda bir sorun olduğunu özyinelemeli yol giderek, Tecrübelerime göre manual for recursive modules

bakınız. Tasarımınızı basitleştirmek ve daha katmanlı bir yaklaşım kullanarak herhangi bir bağımlılık döngüsünü kırmak için zaman ayırmalısınız. Örneğin burada, N'nin Test'te tanımlanmasını ve aynı zamanda Test'e başvurmasını istiyorsunuz. Ancak Test_Outside modülünün N'yi ve N'yi kullanarak Test'in diğer bölümlerini bilmesi gerekiyor mu, yoksa sadece "N'den önce" olan Test'in "temel" tanımlarını mı kullanıyor? İki ayrı "Test" modülünü kullanabilirsiniz, ikincisi ise ilk:

module Test_Outside(Test : Small_Test_Type) = struct ... end 

module InnerTest : Small_Test_Type = struct ... end 

module Test : Test_type = struct 
    include InnerTest 
    module N = Test_Outside(InnerTest) 
    ... 
end 
İlgili konular