我的芭蕾舞女演员项目结构如下
/ <- 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 中的 someName ?
答案 0 :(得分:2)
有关包装的官方文档可以在此link中找到。
简单地说(从Ballerina 0.982版开始),您可以将 my.bar 包导入 my.foo 包的任何.bal
文件中,如下所示,
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());
}
答案 1 :(得分:2)
我认为“ BarFunctions.bal”和“ BarFunction.bal”相同。如果是这样,您可以将“ my.foo”模块导入“ BarFunctions.bal” bal文件,如下所示:
import my.foo;
您不需要模块的组织名称,因为它们来自同一项目。
答案 2 :(得分:2)
由于'my.foo'和'my.bar'模块均来自同一项目,因此在定义import语句时无需提供组织名称。
根据您的情况,如果要使用“ 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();
}