rangos rango por graficar como loops for-loop range rust

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 que sptr 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.



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.