Включение и импорт файлов
Описание include импортирует все типы, функции и константы из указанных файлов и их дочерних файлов включенных с помощью include.
Описание import импортирует только публичные типы, функции и константы из указанных файлов и их дочерних файлов включенных с помощью include. Публичные объекты определяются с помощью ключевого слова pub.
stringConst = "`" { unicode_char } "`" | stringDoubleConst
stringDoubleConst = `"` { unicode_char | uShort | uLong | escapedChar | byteVal } `"`
importDecl = "import" "{" {stringConst newline} "}"
includeDecl = "include" "{" {stringConst newline} "}"
Рассмотрим видимость объектов в виде таблицы. Пусть имеется два файла.
// a.g can include or import b.g
func afunc(i int) : return i*2
pub func apubfunc(i int) : return i*3
// b.g
func bfunc(i int) : return i*4
pub func bpubfunc(i int) : return i*5
Пусть файл c.g может импортировать или включать файл a.g. Вы можете видеть какие функции будут видимы в файле c.g в зависимости от различных ситуаций.
| include a a includes b | include a a imports b | import a a includes b | import a a imports b |
afunc | visible | visible | | |
apubfunc | visible | visible | visible | visible |
bfunc | visible | | | |
bpubfunc | visible | | visible | |
Команда pub определяет следующую функцию, тип или константы как публичные. Вы можете импортировать их с помощью команды import.
pubDecl = "pub" [newline]
objects = [pubDecl] (structDecl | FnDecl | ConstDecl | FunctionDecl)
Ключевое слово pub указывает, что следующая функция, константы или тип будут передаваться в случае импорта файла.
pub const IOTA { // public constants. Visible when include or import
MY1
MY2
}
const IOTA*2 { // private constants. Visible only when include
MY3
MY4
}
Last modified 3yr ago