1 个不稳定版本
0.1.0 | 2023年10月29日 |
---|
#507 在 编程语言 中
15KB
动力
一种快速、强大、表达性和类型安全的语言。
注意:该语言仍在开发中,但目前功能相当齐全。
安装
要安装 dyc
(dynamik compiler),请确保已安装 cargo
并运行以下命令
$ cargo install --git https://github.com/dynamik-lang/Dynamik
然后您就完成了!
快速入门
在动力中打印第一个hello world
目前还没有标准库,因此我们必须使用libc中的printf。
文件:hello_world.dy
extern "C" let printf(string, ...) -> int;
printf("Hello, World!\n");
运行您的第一个代码
编译代码
$ dyc compile hello_world.dy # to compile
$ ./hello_world # to run the executable
Hello, World!
Jit执行代码
$ dyc run hello_world.dy
Hello, World!
语言参考
这是该语言目前支持的内容。注意:由于该语言仍在开发中,本节中的所有内容都可能发生变化。
注释
在动力中,就像任何其他语言一样,注释用于在代码中添加注释或描述功能。它们不是程序的一部分,但为阅读代码的开发者提供了有价值的上下文和解释。
动力使用单行注释,以--开头。以下是一个示例
-- This is a comment in Dynamik
let a: int = 1; -- You can also write comments after code
数据类型
动力支持以下数据类型
string
:字符序列。int
:64位有符号整数。float
:64位浮点数。
let
要定义变量,请使用 let name: type = value;
语法。例如
let a: int = 1;
let b: int = a + 10;
基本数学运算符
动力支持以下基本数学运算符
运算符 | 描述 | 示例 |
---|---|---|
+ | 加法:此运算符将两个数字相加。 | let a: int = 1 + 2; 将 a 设置为 3 。 |
- | 减法:此运算符从第一个数字中减去第二个数字。 | let a: int = 5 - 2; 将 a 设置为 3 。 |
* | 乘法:此运算符将两个数字相乘。 | let a: int = 2 * 3; 将 a 设置为 6 。 |
/ | 除法:此运算符将第一个数字除以第二个数字。 | let a: int = 6 / 2; 将 a 设置为 3 。 |
% | 取模:此运算符返回第一个数字除以第二个数字的余数。 | let a: int = 5 % 2; 将 a 设置为 1 。 |
! | 逻辑非:此运算符反转布尔值的值。 | let a: bool = !true; 将 a 设置为 false 。 |
- | 否定:此运算符改变数字的符号。 | let a: int = -3; 将 a 设置为 -3 。 |
函数
您可以使用以下语法在 Dynamik 中定义函数
fn print_hello() {
printf("Hello World");
}
函数也可以接受参数
fn add(v1: int, v2: int) -> int {
return v1 + v2;
}
在上面的示例中,add
函数接受两个 int
参数并返回一个 int
值。
外部函数
Dynamik 允许您使用 C 库中的外部函数。要使用外部函数,您可以声明如下
extern "C" fn puts(string) -> int;
extern "C" fn printf(string, ...) -> int;
末尾的 ...
表示该函数可以接受可变数量的参数,使其成为变长参数函数。
如果-否则语句
Dynamik 支持用于控制程序流的 if-else 语句。例如:注意:Dynamik 不支持
let a: int = 3;
let b: int = a + 1;
if a != b {
printf("A is not equal to B");
} else {
printf("A is equal to B");
}
在上面的代码中,if-else 语句检查 a
是否等于 b
,在每种情况下,都打印一条消息。
while 语句
Dynamik 还支持 while 循环。例如
let x: int = 0;
while x < 5 {
printf("%d\n", x);
x = x + 1;
}
在上面的代码中,while 循环在 x
小于 5 时打印 x
的值。
模块
Dynamik 允许您创建模块以组织代码和创建命名空间。例如
mod math {
fn add(v1: int, v2: int) -> int {
return v1 + v2;
}
}
在这个例子中,我们创建了一个名为 math
的模块。该模块包含一个名为 add
的函数,该函数将两个值相加并返回结果。使用 math
模块,您可以如下调用 add
函数
printf("1 + 2 = %d\n", math::add(1, 2));
待办事项
- 添加更多类型
- 添加指针
- 添加固定大小数组
- 添加结构体
- 添加特性和impl块
- 添加依赖类型
- 创建标准库
- 开发包管理器