असल में मैं एक मॉड्यूल चाहता हूं जो उसके दायरे से बाहर के कार्यों का उपयोग कर सके। मैं इस की जरूरत है, क्योंकि मेरे काम केवल एक रूपरेखा जहाँ उपयोगकर्ता में अपने स्वयं के कोड डाल करने के लिए सक्षम हो जाएगा प्रदान करेगा। इसमॉड्यूल के अंदर मॉड्यूल के बाहर से आप फ़ंक्शन का उपयोग कैसे कर सकते हैं
Simulation.jl
abstract AbstractType
function startSimulation(unknown::AbstractType)
doStuff(unknown)
end
MyModule.jl तरह
module MyModule
include("Simulation.jl")
export AbstractType, startSimulation
end
SomeImplementation.jl
type ConcreteType <: AbstractType
variable::Int64
end
doStuff(me::ConcreteType)
me.variable
end
और अंत में Main.j एल
# push!(LOAD_PATH, pwd()) # for local usage
using MyModule
include("SomeImplementation.jl")
startSimulation(ConcreteType(5))
कहाँ Simulation.jl और MyModule.jl मुझे और SomeImplementation.jl और Main.jl द्वारा लिखे जाते हैं उपयोगकर्ता द्वारा लिखा जाता है।
अब ऊपर के उदाहरण काम नहीं करता, क्योंकि मॉड्यूल को अपने स्वयं के नाम स्थान है और यहां तक कि यद्यपि SomeImplementation.jl लाइन 3 पर मुख्य में आयात किया जाता है, दुभाषिया यह Simulation.jl की लाइन 4 में नहीं देख सकेंगे।
मैं MyModule.jl में कुछ भी आयात नहीं कर सकता, क्योंकि मुझे नहीं पता कि उपयोगकर्ता अपनी सामग्री का नाम कैसे देगा या उसे कितनी अतिरिक्त libs की आवश्यकता हो सकती है।
क्या मॉड्यूल के साथ ऐसा करने का कोई तरीका है? अन्यथा मैं मॉड्यूल का उपयोग नहीं करूँगा।
धन्यवाद एक:
फिर ठोस कार्यान्वयन बस विशेष रूप से आयात करने के लिए या इसे योग्यता से MyModule में कार्य करने के लिए अपने
doStuff
विधि जोड़ने की जरूरत बहुत! विशेष रूप से स्टब्स उपयोगकर्ता को सूचित करने में बहुत मदद करेंगे कि मेरे इंटरफेस के खिलाफ कोड कैसे करें। मैंने अपना स्टार्ट सिमुलेशन फ़ंक्शन नहीं बढ़ाया था। किसी भी कारण से आप इसे मॉड्यूल फ़ाइल में क्यों डालते हैं? – Nozdrumयह वास्तव में कोई फर्क नहीं पड़ता कि आप अपने मॉड्यूल को अलग फ़ाइलों में कैसे व्यवस्थित करते हैं। इस कोड को सीधे 'मॉड्यूल' ब्लॉक में, या तो सीधे या 'शामिल' के माध्यम से रहने की आवश्यकता है। –