سيتم إطلاق BazelCon لعام 2022 في الفترة من 16 إلى 17 تشرين الثاني (نوفمبر) في نيويورك وعلى الإنترنت. التسجيل اليوم
جديد: انضم إلينا في يوم المنتدى في 15 تشرين الثاني (نوفمبر). التفاصيل والتسجيل:

إنشاء

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
كائن عام يحتوي على حقول.

لا يمكن إعادة تخصيص حقول "البنية" بعد إنشاء البنية. وتكون الباطلتان متساويتين إذا كانت تحتوي على الحقول نفسها وإذا كانت قيم الحقول المقابلة متساوية.

المشتركون الداعمون

إنشاء

struct struct(**kwargs)

تنشئ بنية غير قابلة للتغيير باستخدام وسيطات الكلمة الرئيسية كسمات. ويُستخدم لتجميع قيم متعددة معًا. مثال:
s = struct(x = 2, y = 3)
return s.x + getattr(s, "y")  # returns 5

المَعلمات

المعلمة الوصف
kwargs default = {}
قاموس الوسيطات.

to_json

string struct.to_json()

متوقف. تم إيقاف واجهة برمجة التطبيقات هذه وستتم إزالتها قريبًا. يُرجى عدم الاعتماد عليه. وهي غير مفعَّلة في ---incompatible_struct_has_no_methods. يمكنك استخدام هذه العلامة للتأكد من توافق الرمز مع الإزالة الوشيكة.
يُنشئ سلسلة JSON من معلّمة البنية. لا تعمل هذه الطريقة إلا إذا كانت جميع عناصر البنية (بشكل متكرر) هي سلاسل أو سباب أو قيم منطقية أو بنيات أخرى أو قائمة من هذه الأنواع أو قاموس بمفاتيح سلسلة وقيم من هذه الأنواع. يتم تخطي علامات الاقتباس والخطوط الجديدة في السلاسل. أمثلة:
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"}}}

متوقّف: بدلاً من ذلك، استخدِم json.encode(x) أو json.encode_indent(x)، اللذين يعملان مع قيم أخرى غير البنى ولا تضرّ بمساحة اسم حقل البنية.

to_proto

string struct.to_proto()

متوقف. تم إيقاف واجهة برمجة التطبيقات هذه وستتم إزالتها قريبًا. يُرجى عدم الاعتماد عليه. وهي غير مفعَّلة في ---incompatible_struct_has_no_methods. يمكنك استخدام هذه العلامة للتأكد من توافق الرمز مع الإزالة الوشيكة.
ينشئ رسالة نصية من معلمة البنية. لا تعمل هذه الطريقة إلا إذا كانت جميع عناصر البنية (بشكل متكرر) هي سلاسل أو سباب أو قيم منطقية أو بنيات أو قواعد أخرى أو قوائم من هذه الأنواع. يتم تخطي علامات الاقتباس والخطوط الجديدة في السلاسل. يتم تكرار مفاتيح البنية بالترتيب المُرتَّب. أمثلة:
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
# }

متوقّف نهائيًا: استخدِم proto.encode_text(x) بدلاً من ذلك.