Wie Sie Zugriff auf enum-Werte in Rust?
struct Point {
x: f64,
y: f64,
}
enum Shape {
Circle(Point, f64),
Rectangle(Point, Point),
}
let my_shape = Shape::Circle(Point { x: 0.0, y: 0.0 }, 10.0);
Möchte ich ausdrucken circle
's zweite Eigenschaft, die 10.0 hier.
Ich habe versucht my_shape.last
und my_shape.second
, aber weder gearbeitet.
Was sollte ich tun, um zu drucken 10.0 in diesem Fall?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie pattern-matching:
Beispiel-Ausgabe:
Als Sie sind nur daran interessiert, passende eine der Varianten, die Sie verwenden können, eine
if let
Ausdruck anstelle einesmatch
:Bedeutet dieses "wenn
my_shape
werden kann destructured in eineCircle
, nichts mit dem ersten index, sondern binden Sie den Wert des zweiten index zuradius
".Vom Der Rost Programmiersprache:
Wenn Sie möchten, um in der Lage zu schreiben-Funktionen, die in der Lage sind, arbeiten auf mehreren Typen mit unterschiedlichen Darstellungen, haben Sie einen Blick auf Merkmale.
Hier ist ein weiterer Weg, es zu tun:
Dies funktioniert nur, wenn das Muster ist unwiderlegbar, wie beim enum-Typ du bist matching auf nur eine Variante. Um diese Arbeit zu machen, musste ich entfernen Sie die nicht
Rectangle
Variante.In Fällen, In denen Sie mehr als eine Variante, Sie werden wahrscheinlich wollen die volle match-Ausdruck sowieso, da bist du vermutlich Handhabung mehr als nur eine Art von Form.