Импорт балерины из местной упаковки - PullRequest
0 голосов
/ 15 октября 2018

У меня есть структура проекта балерины, как показано ниже

/  <- 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;
}

Как мне ссылаться и использовать someName из FooFunctions.bal ?

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Я предполагаю, что "BarFunctions.bal" и "BarFunction.bal" одинаковы.Если это так, вы можете импортировать модуль "my.foo" в файл bal "BarFunctions.bal", как показано ниже:

import my.foo;

Вам не нужно название организации модуля, как оно естьиз того же проекта.

0 голосов
/ 24 октября 2018

Поскольку модули «my.foo» и «my.bar» относятся к одному и тому же проекту, вам не нужно указывать название организации при определении оператора импорта.

В соответствии с вашим сценарием, если вы хотите использовать функцию 'someName ()', которая находится в модуле 'my.bar' в 'my.foo', вы можете просто сделать следующее в 'FooFunctions.bal':

import my.bar; 

public function main() {   
  // i will have the value returned from 'someName()' function
  int i = bar:someName(); 
}
0 голосов
/ 15 октября 2018

Официальные документы по упаковке можно найти по этой ссылке .

Простыми словами [начиная с версии 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());
}

, где вы заменяете <org-name> из корневого уровня вашего проекта Ballerina.toml файлаorg-name значение.И обратите внимание, как bar используется для ссылки на функции из пакета my.bar .Это выделено в документе Ballerina, как показано ниже,

Идентификаторы являются либо производными, либо явными.Идентификатором по умолчанию является либо имя пакета, либо, если имя пакета содержит точки . include, то последнее слово после последней точки.

Кроме того, вы можете выбрать идентификатор для импортируемого пакета.,Например, я могу идентифицировать <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());
}
...