基础语法

本章将介绍 Fleet 语言的基础语法,包括变量、函数、注释等核心概念。

📝 Hello World

让我们从经典的 Hello World 程序开始:

fn main() {
    print("Hello, Fleet!");
}

解释: - fn 关键字定义函数 - main 是程序的入口函数 - print() 是内置的输出函数 - 字符串使用双引号包围

🔤 变量和绑定

Fleet 使用 let 关键字声明变量:

fn main() {
    let name = "Fleet";
    let version = 1;
    let is_stable = true;

    print(name);
    print(version);
    print(is_stable);
}

类型注解

虽然 Fleet 支持类型推断,但你也可以显式指定类型:

fn main() {
    let name: str = "Fleet";
    let version: int = 1;
    let pi: f64 = 3.14159;

    print("Language: " + name);
    print("Version: " + version);
    print("Pi: " + pi);
}

可变变量

默认情况下,变量是不可变的。使用 var 声明可变变量:

fn main() {
    let immutable = 10;    // 不可变
    var mutable = 20;      // 可变

    // immutable = 15;     // 错误!不能修改不可变变量
    mutable = 25;          // 正确

    print(mutable);
}

🔢 基础数据类型

Fleet 提供了丰富的基础数据类型:

整数类型

fn main() {
    // 有符号整数
    let i8_val: i8 = 127;
    let i16_val: i16 = 32767;
    let i32_val: i32 = 2147483647;
    let i64_val: i64 = 9223372036854775807;

    // 无符号整数
    let u8_val: u8 = 255;
    let u16_val: u16 = 65535;
    let u32_val: u32 = 4294967295;
    let u64_val: u64 = 18446744073709551615;

    // 架构相关
    let int_val: int = 42;      // 默认有符号整数
    let uint_val: uint = 42;    // 默认无符号整数
}

浮点数类型

fn main() {
    let f32_val: f32 = 3.14;
    let f64_val: f64 = 3.141592653589793;
    let default_float = 2.718;  // 默认为 f64

    // 科学计数法
    let large_num = 1.23e10;
    let small_num = 1.23e-10;
}

字符和字符串

fn main() {
    // 字符类型
    let rune_char: rune = 'A';      // Unicode 字符
    let byte_char: byte = b'A';     // 单字节字符

    // 字符串类型
    let greeting: str = "Hello, World!";
    let multiline = "This is a
    multiline string";

    // 原始字符串
    let raw_string = r"C:\Users\Name\Documents";
}

布尔类型

fn main() {
    let is_true: bool = true;
    let is_false: bool = false;

    // 布尔运算
    let and_result = is_true && is_false;  // false
    let or_result = is_true || is_false;   // true
    let not_result = !is_true;             // false
}

🔧 函数

函数是 Fleet 程序的基本构建块:

基本函数定义

fn greet() {
    print("Hello from function!");
}

fn main() {
    greet();
}

带参数的函数

fn greet_person(name: str) {
    print("Hello, " + name + "!");
}

fn add(a: int, b: int) {
    let result = a + b;
    print("Result: " + result);
}

fn main() {
    greet_person("Alice");
    add(5, 3);
}

返回值

fn add(a: int, b: int) -> int {
    return a + b;
}

fn multiply(a: int, b: int) -> int {
    a * b  // 最后一个表达式自动返回
}

fn main() {
    let sum = add(5, 3);
    let product = multiply(4, 6);

    print("Sum: " + sum);
    print("Product: " + product);
}

💬 注释

Fleet 支持单行注释:

// 这是单行注释
fn main() {
    let x = 42;  // 行末注释

    // 多行注释可以这样写:
    // 第一行注释
    // 第二行注释
    // 第三行注释

    print(x);
}

🧮 运算符

Fleet 支持常见的算术、比较和逻辑运算符:

算术运算符

fn main() {
    let a = 10;
    let b = 3;

    let addition = a + b;      // 13
    let subtraction = a - b;   // 7
    let multiplication = a * b; // 30
    let division = a / b;      // 3
    let modulo = a % b;        // 1

    print("Addition: " + addition);
    print("Subtraction: " + subtraction);
    print("Multiplication: " + multiplication);
    print("Division: " + division);
    print("Modulo: " + modulo);
}

比较运算符

fn main() {
    let a = 10;
    let b = 20;

    let equal = a == b;        // false
    let not_equal = a != b;    // true
    let less_than = a < b;     // true
    let less_equal = a <= b;   // true
    let greater_than = a > b;  // false
    let greater_equal = a >= b; // false

    print("Equal: " + equal);
    print("Not equal: " + not_equal);
    print("Less than: " + less_than);
}

位运算符

fn main() {
    let a = 12;  // 1100 in binary
    let b = 10;  // 1010 in binary

    let and_result = a & b;    // 8 (1000)
    let or_result = a | b;     // 14 (1110)
    let xor_result = a ^ b;    // 6 (0110)
    let not_result = !a;       // -13 (bitwise NOT)
    let left_shift = a << 1;   // 24 (11000)
    let right_shift = a >> 1;  // 6 (110)

    print("AND: " + and_result);
    print("OR: " + or_result);
    print("XOR: " + xor_result);
}

🎯 练习

尝试编写以下程序来练习基础语法:

  1. 计算器程序:编写函数计算两个数的四则运算
  2. 温度转换:编写函数在摄氏度和华氏度之间转换
  3. 数字分析:给定一个整数,判断它是正数、负数还是零

示例解答

// 1. 计算器程序
fn calculator() {
    let a = 15;
    let b = 4;

    print("Numbers: " + a + " and " + b);
    print("Addition: " + (a + b));
    print("Subtraction: " + (a - b));
    print("Multiplication: " + (a * b));
    print("Division: " + (a / b));
}

// 2. 温度转换
fn celsius_to_fahrenheit(celsius: f64) -> f64 {
    return celsius * 9.0 / 5.0 + 32.0;
}

fn fahrenheit_to_celsius(fahrenheit: f64) -> f64 {
    return (fahrenheit - 32.0) * 5.0 / 9.0;
}

// 3. 数字分析
fn analyze_number(num: int) {
    if num > 0 {
        print("Positive number");
    } else if num < 0 {
        print("Negative number");
    } else {
        print("Zero");
    }
}

fn main() {
    calculator();

    let temp_c = 25.0;
    let temp_f = celsius_to_fahrenheit(temp_c);
    print("25°C = " + temp_f + "°F");

    analyze_number(42);
    analyze_number(-10);
    analyze_number(0);
}

📖 下一步

恭喜你完成了 Fleet 基础语法的学习!接下来,让我们深入了解 类型系统,学习 Fleet 强大的类型特性。