Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 你是如何制作铁锈系列的?_Loops_For Loop_Range_Rust - Fatal编程技术网

Loops 你是如何制作铁锈系列的?

Loops 你是如何制作铁锈系列的?,loops,for-loop,range,rust,Loops,For Loop,Range,Rust,文档没有说明如何进行循环,本教程完全忽略了for循环。使用。实际上,本教程的这一部分确实涵盖了for循环: 在向量上迭代时,请改用for for elt in ["red", "green", "blue"] { std::io::println(elt); } 但是,如果需要索引,可以使用(或int::range或u8::range或u32::range或u64::range)和Rust的块语法执行以下操作: range(0u, 64u, {|i| C[i] = A[i] + B[i]

文档没有说明如何进行循环,本教程完全忽略了for循环。

使用。

实际上,本教程的这一部分确实涵盖了
for
循环:

在向量上迭代时,请改用
for

for elt in ["red", "green", "blue"] {
   std::io::println(elt);
}
但是,如果需要索引,可以使用(或
int::range
u8::range
u32::range
u64::range
)和Rust的块语法执行以下操作:

range(0u, 64u, {|i| C[i] = A[i] + B[i]});
Rust用于支持此等效语法,但后来被删除:

range(0u, 64u) {|i|
    C[i] = A[i] + B[i];
}
请注意,自rustc 0.4(2012年10月)起,替代结构

range(0u, 64u) {|i|
    C[i] = A[i] + B[i];
}
似乎不再受支持。

从1.0开始,for循环使用的值类型为

这本书在和中描述了这种技术

如果您对for循环的操作方式感兴趣,请参阅中描述的语法

例如:

fn main(){
设strs=[“红”、“绿”、“蓝”];
对于标准试验堆中的sptr.iter(){
println!(“{}”,sptr);
}
}
()

如果您只想在一个数字范围内进行迭代,如在循环的C中,您可以使用
a..b
语法创建一个数字范围:

0..3中的i的
{
println!(“{}”,i);
}
如果同时需要索引和数组中的元素,那么获取它们的惯用方法是:

fn main(){
设strs=[“红”、“绿”、“蓝”];
对于strs.iter().enumerate()中的(i,s){
println!(“字符串{}是{}”,i,s);
}
}
注:

  • 循环项是对iteratee元素的借用引用。在本例中,
    str
    的元素具有类型
    &'static str
    ——它们是指向静态字符串的借用指针。这意味着
    sptr
    具有类型
    &“static str
    ,因此我们将其取消引用为
    *sptr
    。我更喜欢的另一种形式是:

      for &s in strs.iter() {
          println!("{}", s);
      }
    
对于范围(0,100)内的i
现在被弃用,取而代之的是
对于0..100内的i
(根据
rustc 1.0.0-nightly


另外值得注意的是,当使用范围内的标识符(例如,
表示0..a中的i
)时,编译器无法消除歧义,因此必须使用
表示(0..a)中的i
,但是有人提交来解决这个问题。

谢谢!我很好奇为什么Rust对函数定义和块有两种不同的语法。似乎它们可以通过重用
fn(args…
而不是
| args |
@mcandre实际上,Ruby风格的块语法
{args | body}来避免程序员的麻烦
用于表示一个闭包而不仅仅是一个函数。它还非常方便简化匿名函数的使用,正如您在Javascript中看到的那样,因为任何接受闭包作为其最后参数的函数(如回调函数)可以在函数调用后编写,如上面Lindsey的第三个示例中所示。最后,尽管Rust有几种不同类型的闭包,但在使用块语法时,Rust可以推断出所需的闭包类型。请参见,这是否仍然有效?我无法获得要编译的range(n,n){| I |…}。我会出现奇怪的错误。从Rust 0.6开始,对于int::range()| I |{C[i]=A[i]+B[i];}应该有用。对于作为参数传递闭包的语法糖,iirc。如果有int类型,则可能重复的Take-at-identifier歧义已在中修复,现在已被弃用。他是对的。它已被删除,因此此答案已过时。如何对0..3进行rev?@EvgeniNabokov添加括号:
(0..3).rev(){//Code here…}参考:我如何使Iau8?我在0..26{中为I:u8做了,但它不起作用。