如何在 Rust 中 return for 循环内的值?
How to return a value inside for loop in rust?
我想移植这个 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 代码,与上面 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 return for 循环中的值的正确方法是什么?为什么我的 Rust 代码输出与 pythons 不同的输出?
问题是线路
let x = 2.0 * x;
let
引入了一个新的变量,原来的x
没有修改。
下一个循环迭代将再次用参数 x
乘以 2.0,而不是上一个循环迭代中的变量 x
。
您需要将值赋给现有的 x
变量(这需要将其标记为 mut
able):
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));
}
}
我想移植这个 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 代码,与上面 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 return for 循环中的值的正确方法是什么?为什么我的 Rust 代码输出与 pythons 不同的输出?
问题是线路
let x = 2.0 * x;
let
引入了一个新的变量,原来的x
没有修改。
下一个循环迭代将再次用参数 x
乘以 2.0,而不是上一个循环迭代中的变量 x
。
您需要将值赋给现有的 x
变量(这需要将其标记为 mut
able):
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));
}
}