loops - como - graficar por rangos en excel
¿Cómo se hace un rango en Rust? (5)
Los documentos no dicen cómo y el tutorial ignora por completo los bucles.
A partir de 1.0, los bucles funcionan con valores de tipos con el rasgo de iterador. Aquí está el tutorial relevante para for-loops:
http://doc.rust-lang.org/nightly/book/for-loops.html
y para más detalles
http://doc.rust-lang.org/nightly/book/iterators.html
Si está interesado en cómo funcionan los bucles, consulte el azúcar sintáctico descrito aquí:
http://doc.rust-lang.org/std/iter/index.html
Ejemplo playpen :
fn main() {
let strs = ["red", "green", "blue"];
for sptr in strs.iter() {
println!("{}",sptr);
}
}
Si solo desea iterar sobre un rango de números, como en C for
bucles, puede crear un rango numérico con la sintaxis a..b
:
for i in 0..3 {
println!("{}", i);
}
Si necesita tanto el índice como el elemento de una matriz, la forma idiomática de obtenerlo es con el método Iterator::enumerate
:
fn main() {
let strs = ["red", "green", "blue"];
for (i, s) in strs.iter().enumerate() {
println!("String #{} is {}", i, s);
}
}
Notas:
Los elementos de bucle son referencias prestadas a los elementos iteratee. En este caso, los elementos de
strs
tienen type&''static str
- son punteros prestados a strings estáticos. Esto significa quesptr
tiene el tipo&&''static str
así que lo desreferenciamos como*sptr
. Una forma alternativa que prefiero es:for &s in strs.iter() { println!("{}",s); }
En realidad, la sección Loops del tutorial cubre los bucles:
Cuando itere sobre un vector, use
for
lugar.
for elt in ["red", "green", "blue"] { std::io::println(elt); }
Pero si necesita índices, puede hacer algo como lo siguiente, utilizando la función uint::range
de la biblioteca central (o int::range
o u8::range
o u32::range
o u64::range
) y la sintaxis de Rust para bloques:
range(0u, 64u, {|i| C[i] = A[i] + B[i]});
Rust solía soportar esta sintaxis equivalente pero luego se eliminó:
range(0u, 64u) {|i|
C[i] = A[i] + B[i];
}
Tenga en cuenta que a partir de rustc 0.4 (octubre de 2012), la construcción alternativa de
range(0u, 64u) {|i|
C[i] = A[i] + B[i];
}
parece no ser compatible más.
Use int::range .
for i in range(0, 100)
ahora está en desuso a favor de for i in 0..100
(de acuerdo con rustc 1.0.0-nightly
.
También vale la pena señalar que el compilador no puede desambiguar cuando utiliza un identificador en el rango (por ejemplo, for i in 0..a
), por lo que debe usar for i in (0..a)
, pero hay una solicitud de extracción enviada a arregla esto.