Rust编程的函数

【图书介绍】《Rust编程与项目实战》-CSDN博客

《Rust编程与项目实战》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)

Rust编程与项目实战_夏天又到了的博客-CSDN博客

7.1  函 数 定 义

在Rust中,函数使用fn关键字定义,后跟函数名、参数列表、返回类型和函数体。函数体由一系列语句组成,用于执行特定的操作和计算。以下是一个简单的函数示例:

fn greet() {
    println!("Hello, Rust!");
}
fn main() {
    greet();
}

上述示例中,我们定义了一个名为greet的函数,它不接收任何参数,也没有返回值。函数体中的语句println!("Hello, Rust!")用于打印一条问候信息。在main函数中,我们调用了greet函数,通过函数名后加上圆括号“()”来调用函数。

7.2  函 数 参 数

函数可以接收参数,参数是函数的输入数据,用于在函数体中进行处理和操作。在Rust中,函数的参数由参数名和类型组成,并通过逗号分隔。以下是一个带有参数的函数示例:

fn greet(name: &str) {
    println!("Hello, {}!", name);
}

fn main() {
    let name = "Alice";
    greet(name);
}

在上述示例中,我们定义了一个名为greet的函数,它接收一个类型为&str的参数name。参数类型&str表示一个字符串切片,它是对字符串的引用。

在main函数中,我们定义了一个名为name的变量,并将其赋值为"Alice"。然后,我们将name作为参数传递给greet函数,以打印问候信息。

7.3  函数返回值

函数可以返回一个值,返回值是函数的输出结果,用于提供函数执行后的结果或计算的值。在Rust中,函数的返回类型由->符号后跟类型来指定。以下是一个带有返回值的函数示例:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    let result = add(3, 5);
    println!("Result: {}", result);
}

在上述示例中,我们定义了一个名为add的函数,它接收两个参数a和b,类型均为i32。函数体中的表达式a + b表示将参数a和b相加,并作为函数的返回值。

在main函数中,我们调用了add函数,并将返回值存储在result变量中。然后,使用println!宏打印出结果。结果输出:Result: 8。

7.4  函 数 重 载

Rust不支持传统意义上的函数重载,即在同一作用域中定义多个同名函数但参数类型或数量不同的情况。然而,Rust通过使用泛型和trait来实现类似的功能。以下是一个使用泛型和trait实现函数重载的示例:

trait Add {
    type Output;
    fn add(self, other: Self) -> Self::Output;
}

impl Add for i32 {
    type Output = i32;
    fn add(self, other: Self) -> Self::Output {
        self + other
    }
}

impl Add for f64 {
    type Output = f64;
    fn add(self, other: Self) -> Self::Output {
        self + other
    }
}

fn main() {
    let a = 3;
    let b = 5;
    let c = 2.5;
    let d = 4.8;

    let result1 = a.add(b);
    let result2 = c.add(d);

    println!("Result 1: {}", result1);
    println!("Result 2: {}", result2);
}

    println!("Result 1: {}", result1);

    println!("Result 2: {}", result2);

}

在上述示例中,我们定义了一个名为Add的trait,它具有一个关联类型Output和一个add方法。然后,为i32和f64类型分别实现了Add trait,为它们提供了不同的实现方式。

在main函数中,我们分别定义了a、b、c和d四个变量,并使用add方法对它们进行相加操作。根据变量的类型,编译器会自动选择正确的实现方式。运行结果如下:

Result 1: 8
Result 2: 7.3

7.5  函数作为参数和返回值

在Rust中,函数可以作为参数传递给其他函数,也可以作为函数的返回值。这种特性可以实现函数的灵活组合和高阶函数的编写。以下是一个函数作为参数和返回值的示例:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn subtract(a: i32, b: i32) -> i32 {
    a - b
}

fn calculate(op: fn(i32, i32) -> i32, a: i32, b: i32) -> i32 {
    op(a, b)
}

fn main() {
    let result1 = calculate(add, 3, 5);
    let result2 = calculate(subtract, 8, 4);

    println!("Result 1: {}", result1);
    println!("Result 2: {}", result2);
}

在上述示例中,我们定义了两个简单的函数add和subtract,分别用于相加和相减操作。

然后,我们定义了一个名为calculate的函数,它接收一个函数参数op,类型为fn(i32, i32) -> i32,表示接收两个i32类型的参数并返回i32类型结果。在函数体中,我们调用了op函数,并传递了a和b作为参数。

在main函数中,我们分别使用add和subtract作为calculate函数的参数,并打印出计算结果。运行结果如下:

Result 1: 8
Result 2: 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值