MST

星途 面试题库

面试题:Rust中常函数与常量表达式结合使用的基础场景

请举例说明在Rust中,如何定义一个常函数,并将其应用在常量表达式中,以实现计算圆的面积(假设圆的半径作为常量输入)。请写出完整的代码,并解释代码的工作原理。
23.4万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
const PI: f64 = 3.141592653589793;

// 定义常函数
const fn circle_area(radius: f64) -> f64 {
    PI * radius * radius
}

fn main() {
    // 将常函数应用在常量表达式中
    const RADIUS: f64 = 5.0;
    const AREA: f64 = circle_area(RADIUS);
    println!("半径为 {} 的圆的面积是: {}", RADIUS, AREA);
}

代码工作原理解释:

  1. 定义PI常量
    const PI: f64 = 3.141592653589793;
    
    定义了一个名为PI的常量,类型为f64(64位浮点数),其值为圆周率的近似值。
  2. 定义常函数circle_area
    const fn circle_area(radius: f64) -> f64 {
        PI * radius * radius
    }
    
    使用const fn定义了一个常函数circle_area,该函数接受一个f64类型的参数radius(圆的半径),返回值也是f64类型,即圆的面积。函数体中通过PI * radius * radius计算圆的面积。
  3. main函数中使用常函数
    fn main() {
        const RADIUS: f64 = 5.0;
        const AREA: f64 = circle_area(RADIUS);
        println!("半径为 {} 的圆的面积是: {}", RADIUS, AREA);
    }
    
    main函数中,首先定义了一个常量RADIUS表示圆的半径为5.0。然后通过circle_area(RADIUS)调用常函数来计算圆的面积,并将结果赋值给常量AREA。最后使用println!宏输出半径和对应的圆面积。由于circle_area是常函数,在编译时就会计算出结果,所以AREA的值在编译期就确定了。