gpt4 book ai didi

rust - 如何在 Rust 循环中返回一个值?

转载 作者:行者123 更新时间:2023-12-04 02:44:30 26 4
gpt4 key购买 nike

我想移植这段python代码

#!/usr/bin/python
# -*- coding: utf-8 -*-

def testing(x, y):
for i in range(y):
x = 2.0 * x
if x > 3.5:
return i
return 999


for i in range(20):
print testing(float(i) / 10, 15)

及其输出

999
5
4
3
3
2
2
2
etc.

防 rust 代码。这是我编写的 rust 代码,与上面的 python 代码相同。

fn testing(x: f32, y: i32) -> i32 {
for i in 0..y {
let x = 2.0 * x;
if x > 3.5 {
return i;
}
}
return 999;
}

fn main() {
for i in 0..20 {
let a = i as f32;
println!("{}", testing(a / 10.0, 15));
}
}

但是它的输出和python代码的输出不一样

999
999
999
999
999
999
999
etc.

使用 rust 在 for 循环中返回值的正确方法是什么?为什么我的 Rust 代码输出与 Python 不同的输出?

最佳答案

问题是线路

let x = 2.0 * x;

let引入了一个新的变量,原来的x没有被修改。下一个循环迭代将再次使用参数 x 乘以 2.0,而不是来自上一个循环迭代的变量 x

您需要将值赋给现有的 x 变量(这需要将其标记为 mutable):

fn testing(mut x: f32, y: i32) -> i32 {
for i in 0..y {
x = 2.0 * x;
if x > 3.5 {
return i;
}
}
return 999;
}

fn main() {
for i in 0..20 {
let a = i as f32;
println!("{}", testing(a / 10.0, 15));
}
}

关于rust - 如何在 Rust 循环中返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60118717/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com