Voglio che l'utente passi gli argomenti della riga di comando a una semplice funzione che ho scritto in Rust. So che posso usare int::from_str(args[1])
per convertire, ma questo restituisce un Option<int>
, il che significa che per passare a una funzione che prende uno int
, come quello qui sotto, devo usare una dichiarazione match
. Ma con gli argomenti n, ci sono 2^n possibilità. Scrivere una serie di frasi nidificate su match
con qualcosa sarebbe terribile. Sarebbe l'ideale se ci fosse un modo per fare qualcosa di simile:Controlla il tipo di enum di ruggine con un booleano?
// will return either Some(int) or None
let start = int::from_str(args[1]), end = int::from_str(args[2]);
if typeof(start) == Some && typeof(end) == Some {
println(fmt!("You entered: %d, %d", start, end);
} else {
println("Error with arguments.");
}
Esiste un tale metodo? Questo mi permette di provare quale membro di un enum è qualcosa di diverso da match
?
Ah, non sapevo che si potevano fare più argomenti in una partita. È fantastico. Suppongo, quindi, che il metodo 'is_some()', e il suo aspetto, debba essere scritto esplicitamente per qualsiasi tipo là fuori? –
@limp_chimp, corretto, c'è '.is_some()' definito su 'Opzione' nella libreria standard; ma se si definiscono le proprie enumerazioni, non ci saranno automaticamente metodi del genere. – huon
@limp_chimp: e in effetti se si guarda all'implementazione di 'is_some', è'! Self.is_none() ', che è' match * self {None => true, Some (_) => false} '. (Ma non temere un colpo perfetto per le chiamate extra al metodo, queste sono tutte contrassegnate con '# [inline]'.) –