BazelCon 2022 findet vom 16. bis 17. November in New York und online statt.
Jetzt anmelden

struct

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Ein generisches Objekt mit Feldern.

Strukturfelder können nicht neu zugewiesen werden, nachdem die Struktur erstellt wurde. Zwei Strukturen sind gleich, wenn sie dieselben Felder haben und die entsprechenden Feldwerte identisch sind.

Mitglieder

struct

struct struct(**kwargs)

Erstellt eine unveränderliche Struktur mithilfe der Schlüsselwortargumente als Attribute. Damit lassen sich mehrere Werte gruppieren. Beispiel:
s = struct(x = 2, y = 3)
return s.x + getattr(s, "y")  # returns 5

Parameter

Parameter Beschreibung
kwargs default = {}
Wörterbuch der Argumente.

to_json

string struct.to_json()

Verworfen. Diese API wurde eingestellt und wird bald entfernt. Hänge dich also nicht davon ab. Es ist mit ---incompatible_struct_has_no_methods deaktiviert. Prüfen Sie mit diesem Flag, ob Ihr Code mit seiner unmittelbaren Entfernung kompatibel ist.
Erstellt einen JSON-String aus dem Strukturparameter. Diese Methode funktioniert nur, wenn alle Strukturelemente (rekursiv) Strings, Ganzzahlen, boolesche Werte, andere Strukturen, eine Liste dieser Typen oder ein Wörterbuch mit Stringschlüsseln und -werten dieser Typen sind. Anführungszeichen und neue Zeilen in Strings werden mit Escapezeichen versehen. Beispiele:
struct(key=123).to_json()
# {"key":123}

struct(key=True).to_json()
# {"key":true}

struct(key=[1, 2, 3]).to_json()
# {"key":[1,2,3]}

struct(key='text').to_json()
# {"key":"text"}

struct(key=struct(inner_key='text')).to_json()
# {"key":{"inner_key":"text"}}

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json()
# {"key":[{"inner_key":1},{"inner_key":2}]}

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json()
# {"key":{"inner_key":{"inner_inner_key":"text"}}}
.

Verworfen: Verwenden Sie stattdessen json.encode(x) oder json.encode_outline(x), die für andere Werte als Structs funktionieren und das STRUCT-Feld-Namespace nicht verschmutzen.

to_proto

string struct.to_proto()

Verworfen. Diese API wurde eingestellt und wird bald entfernt. Hänge dich also nicht davon ab. Es ist mit ---incompatible_struct_has_no_methods deaktiviert. Prüfen Sie mit diesem Flag, ob Ihr Code mit seiner unmittelbaren Entfernung kompatibel ist.
Erstellt eine Textnachricht aus dem Strukturparameter. Diese Methode funktioniert nur, wenn alle Strukturelemente (rekursiv) Strings, Ganzzahlen, boolesche Werte, andere Strukturen oder Wörterbücher oder Listen dieser Typen sind. Anführungszeichen und neue Zeilen in Strings werden mit Escapezeichen versehen. Strukturschlüssel werden in der Sortierreihenfolge iteriert. Beispiele:
struct(key=123).to_proto()
# key: 123

struct(key=True).to_proto()
# key: true

struct(key=[1, 2, 3]).to_proto()
# key: 1
# key: 2
# key: 3

struct(key='text').to_proto()
# key: "text"

struct(key=struct(inner_key='text')).to_proto()
# key {
#   inner_key: "text"
# }

struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_proto()
# key {
#   inner_key: 1
# }
# key {
#   inner_key: 2
# }

struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_proto()
# key {
#    inner_key {
#     inner_inner_key: "text"
#   }
# }

struct(foo={4: 3, 2: 1}).to_proto()
# foo: {
#   key: 4
#   value: 3
# }
# foo: {
#   key: 2
#   value: 1
# }

Eingestellt: Verwende stattdessen proto.encode_text(x).