Về cơ bản tôi muốn một mô-đun có thể sử dụng các chức năng nằm ngoài phạm vi của nó. tôi cần điều này vì công việc của tôi sẽ chỉ cung cấp một khuôn khổ mà người dùng sẽ có thể đặt mã riêng của mình trong. Một cái gì đó nhưBạn có thể sử dụng các chức năng từ bên ngoài mô-đun bên trong mô-đun
Simulation.jl
abstract AbstractType
function startSimulation(unknown::AbstractType)
doStuff(unknown)
end
MyModule.jl này
module MyModule
include("Simulation.jl")
export AbstractType, startSimulation
end
SomeImplementation.jl
type ConcreteType <: AbstractType
variable::Int64
end
doStuff(me::ConcreteType)
me.variable
end
và cuối cùng là Main.j l
# push!(LOAD_PATH, pwd()) # for local usage
using MyModule
include("SomeImplementation.jl")
startSimulation(ConcreteType(5))
Trường hợp Simulation.jl và MyModule.jl được viết bởi tôi và SomeImplementation.jl và Main.jl được viết bởi người dùng. Bây giờ ví dụ trên không hoạt động, bởi vì các mô-đun có không gian tên riêng và thậm chí tho SomeImplementation.jl được nhập vào chính tại dòng 3, trình thông dịch sẽ không nhìn thấy nó trong dòng 4 của Simulation.jl.
Tôi không thể nhập bất kỳ thứ gì trong MyModule.jl, bởi vì tôi không thể biết người dùng sẽ đặt tên cho công cụ của mình hoặc những gì cần thêm nữa.
Có cách nào để thực hiện việc này với mô-đun không? Nếu không, tôi sẽ không sử dụng các mô-đun.
Cảm ơn nhiều! Đặc biệt là các cuống sẽ giúp rất nhiều để thông báo cho người sử dụng như làm thế nào để mã chống lại giao diện của tôi. Tôi đã không di chuyển hàm thoạt phỏng bắt đầu của mình. Bất kỳ lý do nào là tại sao bạn đặt nó vào tệp mô-đun? – Nozdrum
Nó không thực sự quan trọng như thế nào bạn tổ chức module của bạn thành các tập tin riêng biệt. Mã này chỉ cần sống trong khối 'module', trực tiếp hoặc thông qua' include'. –