>我有一个芭蕾舞演员项目结构如下
/ <- project root
|
- my.foo <- first package
|
- FooFunctions.bal <- Some .bal file
|
- my.bar <- second package
|
- BarFunctions.bal <- Another .bal file
请注意如何使用包命名空间。他们在中间有.
。现在假设我有以下简单的BarFunction.bal
public function someName() returns int {
return 10;
}
我该如何引用和使用来自FooFunctions.bal的某个名称?
由于"my.foo"和"my.bar"模块都来自同一个项目,因此在定义导入语句时不需要提供组织名称。
根据您的情况,如果您想使用"my.foo"中"my.bar"模块中的"someName(("函数,您只需在"FooFunctions.bal"中执行以下操作:
import my.bar;
public function main() {
// i will have the value returned from 'someName()' function
int i = bar:someName();
}
有关打包的官方文档可以从此链接中找到。
简单来说[从Ballerina 0.982版本开始],您可以在my.foo软件包的任何.bal
文件中导入 my.bar软件包,如下所示,
import ballerina/io;
import <org-name>/my.bar;
public function main(string... args) {
io:println(bar:someName());
}
从项目的根级别Ballerina.toml文件的org-name
值替换<org-name>
的位置。请注意如何使用bar
来引用来自my.bar包的函数。这在芭蕾舞女演员文件中突出显示如下,
标识符可以是派生的,也可以是显式的。默认标识符是包名称,或者如果包名称包含
.
包含的点,则为最后一个点之后的最后一个单词。
此外,您可以为导入的包选择标识符。例如,我可以使用以下语法将<org-name>/my.bar
标识为barimport
,
import ballerina/io;
import <org-name>/my.bar as barimport; # Now we refer import as barimport
public function main(string... args) {
io:println(barimport:someName());
}
我认为"BarFunctions.bal"和"BarFunction.bal"是相同的。如果是这样,您可以将"my.foo"模块导入"BarFunctions.bal"bal文件,如下所示:
import my.foo;
您不需要模块的组织名称,因为它们来自同一项目。