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