仓颉编程语言:包的导入

使用 import 语句导入其它包中的声明或定义

在仓颉编程语言中,可以通过 import fullPackageName.itemName 的语法导入其他包中的一个顶层声明或定义,fullPackageName 为完整路径包名,itemName 为声明的名字。导入语句在源文件中的位置必须在包声明之后,其他声明或定义之前。例如:

package a
import std.math.*
import package1.foo
import {package1.foo, package2.bar}

如果要导入的多个 itemName 同属于一个 fullPackageName,可以使用 import fullPackageName.{itemName[, itemName]*} 语法,例如:

import package1.{foo, bar, fuzz}

这等价于:

import package1.foo
import package1.bar
import package1.fuzz

除了通过 import fullPackagename.itemName 语法导入一个特定的顶层声明或定义外,还可以使用 import packageName.* 语法将 packageName 包中所有可见的顶层声明或定义全部导入。例如:

import package1.*
import {package1.*, package2.*}

需要注意:

  • import 可以被 private、internal、protected、public 访问修饰符修饰。不写访问修饰符的 import 等价于 private import。
  • 导入的成员的作用域级别低于当前包声明的成员。
  • 当已导出的包的模块名或者包名被篡改,使其与导出时指定的模块名或包名不一致,在导入时会报错。
  • 只允许导入当前文件可见的顶层声明或定义,导入不可见的声明或定义将会在导入处报错。
  • 禁止通过 import 导入当前源文件所在包的声明或定义。
  • 禁止包间的循环依赖导入,如果包之间存在循环依赖,编译器会报错。

示例如下:

// pkga/a.cj
package pkga    // Error, packages pkga pkgb are in circular dependencies.
import pkgb.*

class C {}
public struct R {}

// pkgb/b.cj
package pkgb

import pkga.*

// pkgc/c1.cj
package pkgc

import pkga.C // Error, 'C' is not accessible in package 'pkga'.
import pkga.R // OK, R is an external top-level declaration of package pkga.
import pkgc.f1 // Error, package 'pkgc' should not import itself.

public func f1() {}

// pkgc/c2.cj
package pkgc

func f2() {
    /* OK, the imported declaration is visible to all source files of the same package
     * and accessing import declaration by its name is supported.
     */
    R()

### 仓颉编程语言入门教程 #### 1. 仓颉编程语言概述 仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种编程范式[^2]。它旨在降低开发者入门门槛,同时提供高效的开发体验。仓颉语言通过简洁的语法设计和丰富的功能特性,如值类型、类和接口、泛型、代数数据类型、模式匹配以及高阶函数等,满足不同场景下的开发需求。 #### 2. 安装与环境配置 学习仓颉编程语言的第一步是安装其运行环境。可以通过官方文档或相关教程完成安装过程。通常情况下,安装步骤括下载编译器或解释器、配置环境变量,并验证安装是否成功。具体操作可以参考《仓颉编程语言深入教程》中的相关内容[^1]。 #### 3. 第一个仓颉程序 在完成环境配置后,可以从编写第一个简单程序开始熟悉仓颉语言的基本语法。例如,以下代码展示了如何输出“Hello, World!”: ```python print("Hello, World!") ``` 这段代码使用了 `print` 函数来输出字符串,这是仓颉语言中最基础的输入输出操作之一。 #### 4. 基础概念与数据类型 仓颉语言提供了多种内置数据类型,括但不限于整数、浮点数、字符串、布尔值等。此外,还支持复杂的代数数据类型和模式匹配,这使得开发者能够以更灵活的方式处理数据。例如,定义一个简单的整数变量如下所示: ```python age: int = 25 ``` 这里,`age` 是一个整数类型的变量,使用了类型注解来明确其数据类型。仓颉支持类型推断,因此在某些情况下可以省略显式的类型声明[^2]。 #### 5. 高级特性简介 仓颉语言的一大亮点在于其对函数式编程的支持。例如,可以通过高阶函数实现更简洁的代码逻辑。以下是一个使用高阶函数 `map` 的示例: ```python numbers = [1, 2, 3, 4] squared = map(lambda x: x * x, numbers) print(list(squared)) ``` 该代码片段将列表中的每个元素平方并输出结果。这种表达方式体现了仓颉语言在函数式编程方面的灵活性[^2]。 #### 6. 模块化开发 仓颉语言鼓励模块化开发,通过模块机制可以更好地组织代码结构。例如,可以将相关功能封装到单独的模块中,并在其他地方导入使用。模块化的开发方式有助于提高代码的可维护性和复用性[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值