2.5 KiB
2.5 KiB
数据类型
类型系统
Fig 语言是动态类型语言,运行时进行类型检查。
基本类型
Null 类型
表示空值,只有一个值 null。
var a = null;
Int 类型
64位有符号整数。
var x = 42;
var y = -100;
Double 类型
双精度浮点数。
var pi = 3.14;
var speed = 2.998e8;
String 类型
字符串。
var s1 = "Hello";
Bool 类型
布尔值,true 或 false。
var yes = true;
var no = false;
复合类型
List 类型
有序集合。
var list = [1, 2, 3];
var mixed = [1, "text", true];
可以通过 length() 方法获取长度,返回Int 通过 get() 方法获取指定下标,不存在的下标返回null
Map 类型
键值对集合。
var map = {"key": "value", "num": 42};
通过 get() 方法获取指定下标,不存在的下标返回 null
Function 类型
函数。
var f = func(x, y) { return x + y; };
自定义类型
结构体定义
struct Person {
name: String;
age: Int;
}
默认字段为私有,如需声明为外部可见的字段,使用 public关键字 如
struct Person {
public name: String;
public age: Int;
public func greeting()
{
io.println("hello!");
}
}
创建实例
使用 new 关键字:
var p = new Person {name: "Alice", age: 20};
支持三种初始化方式:
- 命名参数:
new Person {name: "Alice", age: 20} - 位置参数:
new Person {"Alice", 20} - 简写方式:
new Person {name, age}(使用同名变量)
类型操作
类型检查
使用 is 运算符:
var x = "hello";
io.println(x is String); // true
var p = new Person {name: "Alice", age: 20};
io.println(p is Person); // true
获取类型
使用 value.type() 函数(获取内部类型):
import std.value;
var num = 42;
var str = "hello";
var lst = [1, 2, 3];
io.println(value.type(num)); // 获取 num 的类型
io.println(value.type(str)); // 获取 str 的类型
io.println(value.type(lst)); // 获取 lst 的类型
类型转换
转换函数
通过 std.value 模块:
import std.value;
var str = value.string_from(42); // "42"
var num = value.int_parse("123"); // 123
var dbl = value.double_parse("3.14"); // 3.14
错误处理
try-catch 语法
try
{
// 可能抛出异常的代码
}
catch(e: ErrorType)
{
// 处理特定类型的错误
}
catch(e: AnotherError)
{
// 处理另一种错误
}