وظائف عنصر Bicep
توضح هذه المقالة وظائف Bicep للعمل مع الكائنات.
تحتوي على
contains(container, itemToFind)
للتحقق مما إذا كانت المصفوفة تحتوي على قيمة، أو أن العنصر يحتوي على مفتاح، أو سلسلة تحتوي على سلسلة فرعية. تكون مقارنة السلسلة حساسة لحالة الأحرف. ومع ذلك، عند اختبار ما إذا كان عنصر يحتوي على مفتاح، تكون المقارنة غير حساسة لحالة الأحرف.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
حاوية | نعم | صفيف أو عنصر أو سلسلة | القيمة التي تحتوي على العنصر للبحث عنه. |
البحث عن عنصر | نعم | سلسلة أو كثافة العمليات | القيمة التي يتعين العثور عليها. |
قيمة الإرجاع
صحيح إذا تم العثور على العنصر ؛ وإلا، خطأ .
مثال
يوضح المثال التالي كيفية الاستخدام contains
مع أنواع مختلفة:
param stringToTest string = 'OneTwoThree'
param objectToTest object = {
one: 'a'
two: 'b'
three: 'c'
}
param arrayToTest array = [
'one'
'two'
'three'
]
output stringTrue bool = contains(stringToTest, 'e')
output stringFalse bool = contains(stringToTest, 'z')
output objectTrue bool = contains(objectToTest, 'one')
output objectFalse bool = contains(objectToTest, 'a')
output arrayTrue bool = contains(arrayToTest, 'three')
output arrayFalse bool = contains(arrayToTest, 'four')
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
stringTrue | مجموعة | صواب |
stringFalse | مجموعة | خطأ |
objectTrue | مجموعة | صواب |
عنصر خطأ | مجموعة | خطأ |
صفيف صحيح | مجموعة | صواب |
صفيف خطأ | مجموعة | خطأ |
فارغ
empty(itemToTest)
تحديد ما إذا كان صفيف أو كائن أو سلسلة فارغة أو خالية.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
itemToTest | نعم | صفيف أو عنصر أو سلسلة | القيمة التي يجب التحقق منها إذا كانت فارغة أو خالية. |
قيمة الإرجاع
إرجاع True إذا كانت القيمة فارغة أو خالية؛ وإلا، خطأ.
مثال
يتحقق المثال التالي ما إذا كان الصفيف والعنصر والسلسلة فارغة أو خالية.
param testArray array = []
param testObject object = {}
param testString string = ''
param testNullString string?
output arrayEmpty bool = empty(testArray)
output objectEmpty bool = empty(testObject)
output stringEmpty bool = empty(testString)
output stringNull bool = empty(testNullString)
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
arrayEmpty | مجموعة | صواب |
عنصر فارغ | مجموعة | صواب |
stringEmpty | مجموعة | صواب |
stringNull | مجموعة | صواب |
intersection
intersection(arg1, arg2, arg3, ...)
رجوع إلى مصفوفة واحدة أو كائناً مع عناصر مشتركة من المعلمات.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
arg1 | نعم | صفيف أو عنصر | القيمة الأولى المستخدمة في العثور على العناصر الشائعة. |
arg2 | نعم | صفيف أو عنصر | القيمة الثانية المستخدمة في البحث عن العناصر الشائعة. |
وسائط إضافية | لا | صفيف أو عنصر | المزيد من القيم المستخدمة في العثور على العناصر الشائعة. |
قيمة الإرجاع
مصفوفة أو كائن مع العناصر الشائعة.
مثال
يوضح المثال التالي كيفية استخدام intersection
مع الصفائف والكائنات:
param firstObject object = {
one: 'a'
two: 'b'
three: 'c'
}
param secondObject object = {
one: 'a'
two: 'z'
three: 'c'
}
param firstArray array = [
'one'
'two'
'three'
]
param secondArray array = [
'two'
'three'
]
output objectOutput object = intersection(firstObject, secondObject)
output arrayOutput array = intersection(firstArray, secondArray)
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
objectOutput | الكائن | {"one": "a", "three": "c"} |
arrayOutput | صفيف | ["اثنين، ثلاثة"] |
العناصر
items(object)
تحويل كائن قاموس إلى مصفوفة. راجع toObject حول تحويل صفيف إلى كائن.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
كائن | نعم | كائن | كائن القاموس لتحويله إلى مصفوفة. |
قيمة الإرجاع
مصفوفة من الكائنات للقاموس المحول. يحتوي كل كائن في المصفوفة علي key
خاصية تحتوي على قيمة مفتاح القاموس. يحتوي كل كائن أيضا على value
خاصية تحتوي على خصائص الكائن.
مثال
يقوم المثال التالي بتحويل كائن قاموس إلى مصفوفة. لكل كائن في المصفوفة، فإنه ينشئ كائن جديد مع قيم معدلة.
var entities = {
item002: {
enabled: false
displayName: 'Example item 2'
number: 200
}
item001: {
enabled: true
displayName: 'Example item 1'
number: 300
}
}
var modifiedListOfEntities = [for entity in items(entities): {
key: entity.key
fullName: entity.value.displayName
itemEnabled: entity.value.enabled
}]
output modifiedResult array = modifiedListOfEntities
المثال السابق يرجع:
"modifiedResult": {
"type": "Array",
"value": [
{
"fullName": "Example item 1",
"itemEnabled": true,
"key": "item001"
},
{
"fullName": "Example item 2",
"itemEnabled": false,
"key": "item002"
}
]
}
يوضح المثال التالي المصفوفة الذي يتم إرجاعه من دالة العناصر.
var entities = {
item002: {
enabled: false
displayName: 'Example item 2'
number: 200
}
item001: {
enabled: true
displayName: 'Example item 1'
number: 300
}
}
var entitiesArray = items(entities)
output itemsResult array = entitiesArray
المثال يرجع:
"itemsResult": {
"type": "Array",
"value": [
{
"key": "item001",
"value": {
"displayName": "Example item 1",
"enabled": true,
"number": 300
}
},
{
"key": "item002",
"value": {
"displayName": "Example item 2",
"enabled": false,
"number": 200
}
}
]
}
في JSON، العنصر هو مجموعة غير مرتبة من أزواج صفرية أو أكبر من المفاتيح/القيم. يمكن أن يكون الترتيب مختلفًا اعتمادًا على عمليات التنفيذ. على سبيل المثال، تقوم دالة Bicep items() بفرز العناصر بالترتيب الأبجدي. في أماكن أخرى، يمكن الاحتفاظ بالترتيب الأصلي. وبسبب هذا عدم الحتمية، تجنب وضع أي افتراضات حول ترتيب مفاتيح الكائنات عند كتابة التعليمات البرمجية، والتي تتفاعل مع معلمات التوزيع والمخرجات.
json
json(arg1)
يحول سلسلة JSON صالحة إلى نوع بيانات JSON.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
arg1 | نعم | سلسلة | القيمة التي يجب تحويلها إلى JSON. يجب أن تكون السلسلة سلسلة JSON منسقة بشكل صحيح. |
قيمة الإرجاع
نوع بيانات JSON من السلسلة المحددة، أو قيمة فارغة عند تحديد خالية.
الملاحظات
إذا كنت بحاجة إلى تضمين قيمة معلمة أو متغير في كائن JSON، فاستخدم الدالة concatلإنشاء السلسلة التي تمررها إلى الدالة.
مثال
يوضح المثال التالي كيفية استخدام الوظيفةjson
. لاحظ أنه يمكنك تمرير فارغ لكائن فارغ.
param jsonEmptyObject string = 'null'
param jsonObject string = '{\'a\': \'b\'}'
param jsonString string = '\'test\''
param jsonBoolean string = 'true'
param jsonInt string = '3'
param jsonArray string = '[[1,2,3]]'
param concatValue string = 'demo value'
output emptyObjectOutput bool = empty(json(jsonEmptyObject))
output objectOutput object = json(jsonObject)
output stringOutput string =json(jsonString)
output booleanOutput bool = json(jsonBoolean)
output intOutput int = json(jsonInt)
output arrayOutput array = json(jsonArray)
output concatObjectOutput object = json(concat('{"a": "', concatValue, '"}'))
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
emptyObjectOutput | Boolean | صواب |
objectOutput | الكائن | {"a": "b"} |
إخراج السلسلة | السلسلة | اختبار |
booleanOutput | Boolean | صواب |
إخراج العدد الصحيح | رقم صحيح | 3 |
arrayOutput | صفيف | [ 1, 2, 3 ] |
concatObjectOutput | الكائن | { "a": "قيمة عرض توضيحي" } |
طول
length(arg1)
تُرجع هذه الدالة عدد العناصر في مصفوفة، أو الأحرف في سلسلة، أو خصائص مستوى الجذر في كائن.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
arg1 | نعم | صفيف أو سلسلة أو عنصر | الصفيف الذي سيتم استخدامه للحصول على عدد العناصر أو السلسلة التي سيتم استخدامها للحصول على عدد الأحرف أو العنصر الذي سيتم استخدامه للحصول على عدد خصائص مستوى الجذر. |
قيمة الإرجاع
عدد صحيح
مثال
يوضح المثال التالي كيفية استخدام length
مع صفيف وسلسلة:
param arrayToTest array = [
'one'
'two'
'three'
]
param stringToTest string = 'One Two Three'
param objectToTest object = {
propA: 'one'
propB: 'two'
propC: 'three'
propD: {
'propD-1': 'sub'
'propD-2': 'sub'
}
}
output arrayLength int = length(arrayToTest)
output stringLength int = length(stringToTest)
output objectLength int = length(objectToTest)
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
arrayLength | Int | 3 |
stringLength | Int | 13 |
objectLength | Int | 4 |
objectKeys
objectKeys(object)
إرجاع المفاتيح من كائن، حيث يكون العنصر عبارة عن مجموعة من أزواج قيم المفاتيح.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
كائن | نعم | كائن | الكائن، وهو مجموعة من أزواج قيم المفاتيح. |
قيمة الإرجاع
صفيف.
مثال
يوضح المثال التالي كيفية استخدام objectKeys
مع كائن:
var obj = { a: 1, b: 2 }
output keyArray array = objectKeys(obj)
المخرجات من المثال السابق هي:
Name | نوع | القيمة |
---|---|---|
keyArray | صفيف | [ "a", "b" ] |
يقوم keyArray بإرجاع قائمة بالمفاتيح الخاصة بعنصر الإدخال.
في JSON، العنصر هو مجموعة غير مرتبة من أزواج صفرية أو أكبر من المفاتيح/القيم. يمكن أن يكون الترتيب مختلفًا اعتمادًا على عمليات التنفيذ. على سبيل المثال، تقوم دالة Bicep items() بفرز العناصر بالترتيب الأبجدي. في أماكن أخرى، يمكن الاحتفاظ بالترتيب الأصلي. وبسبب هذا عدم الحتمية، تجنب وضع أي افتراضات حول ترتيب مفاتيح الكائنات عند كتابة التعليمات البرمجية، والتي تتفاعل مع معلمات التوزيع والمخرجات.
سطح ضحلة
shallowMerge(inputArray)
يجمع بين صفيف من الكائنات، حيث يتم دمج كائنات المستوى الأعلى فقط. وهذا يعني أنه إذا كانت الكائنات التي يتم دمجها تحتوي على كائنات متداخلة، فلن يتم دمج هذه الكائنات المتداخلة بشكل عميق. بدلا من ذلك، يتم استبدالها بالكامل بالخاصية المقابلة من عنصر الدمج.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
inputArray | نعم | صفيف | صفيف من الكائنات. |
قيمة الإرجاع
كائن.
مثال
يوضح المثال التالي كيفية استخدام shallowMerge
:
var firstArray = [{ one: 'a' }, { two: 'b' }, { two: 'c'}]
var secondArray = [{ one: 'a', nested: {a: 1, nested: {c: 3}} }, { two: 'b', nested: {b: 2}}]
output firstOutput object = shallowMerge(firstArray)
output secondOutput object = shallowMerge(secondArray)
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
الإخراج الأول | كائن | {"one":"a","two":"c"} |
الإخراج الثاني | كائن | {"one":"a","nested":{"b":2},"two":"b"} |
يعرض firstOutput الخصائص من دمج الكائنات المدمجة في كائن جديد. إذا كانت هناك خصائص متعارضة (أي الخصائص التي تحمل نفس الاسم)، فإن الخاصية من العنصر الأخير الذي يتم دمجه عادة ما تكون لها الأسبقية.
يظهر secondOutput أن الدمج الضحل لا يدمج هذه الكائنات المتداخلة بشكل متكرر. بدلا من ذلك، يتم استبدال الكائن المتداخل بأكمله بالخاصية المقابلة من الكائن الدمج.
union
union(arg1, arg2, arg3, ...)
قم بإرجاع صفيف واحد أو عنصر واحد مع كافة العناصر من المعلمات. بالنسبة للصفائف، يتم تضمين القيم المكررة مرة واحدة. بالنسبة للعناصر، يتم تضمين أسماء الخصائص المكررة مرة واحدة فقط.
مساحة الاسم: sys.
المعلمات
المعلمة | المطلوب | نوع | الوصف |
---|---|---|---|
arg1 | نعم | صفيف أو عنصر | القيمة الأولى المستخدمة في الانضمام إلى العناصر. |
arg2 | نعم | صفيف أو عنصر | القيمة الثانية لاستخدامها لضم العناصر. |
وسائط إضافية | لا | صفيف أو عنصر | المزيد من القيم المستخدمة في الانضمام إلى العناصر. |
قيمة الإرجاع
صفيف أو عنصر.
الملاحظات
تستخدم الدالة union تسلسل المعلمات لتحديد ترتيب النتيجة وقيمها.
بالنسبة للصفائف، تتكرر الدالة خلال كل عنصر في المعلمة الأولى وتضيفها إلى النتيجة إذا لم تكن موجودة بالفعل. ثم يكرر العملية للمعلمة الثانية وأي معلمات أخرى. إذا كانت القيمة موجودة بالفعل، فسيتم الاحتفاظ بوضعها السابق في الصفيف.
بالنسبة للعناصر، تُضاف أسماء الخصائص والقيم من المعلمة الأولى إلى النتيجة. بالنسبة للمعلمات اللاحقة، تُضاف أية أسماء جديدة إلى النتيجة. إذا كان لدى معلمة لاحقة خاصية تحمل الاسم نفسه، فستحل هذه القيمة محل القيمة الموجودة. ترتيب الخصائص غير مضمون.
لا تدمج الدالة الموحدة عناصر المستوى الأعلى فحسب، بل تدمج أيضا بشكل متكرر أي كائنات متداخلة داخلها. لا يتم دمج قيم الصفيف المتداخلة. راجع المثال الثاني في القسم التالي.
مثال
يوضح المثال التالي كيفية استخدام union
مع الصفائف والكائنات:
param firstObject object = {
one: 'a'
two: 'b'
three: 'c1'
}
param secondObject object = {
three: 'c2'
four: 'd'
five: 'e'
}
param firstArray array = [
'one'
'two'
'three'
]
param secondArray array = [
'three'
'four'
'two'
]
output objectOutput object = union(firstObject, secondObject)
output arrayOutput array = union(firstArray, secondArray)
الناتج من المثال السابق مع القيم الافتراضية هو:
Name | نوع | القيمة |
---|---|---|
objectOutput | الكائن | {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"} |
arrayOutput | صفيف | ["واحد، إثنان، ثلاثة، أربعة"] |
يوضح المثال التالي إمكانية الدمج العميق:
var firstObject = {
property: {
one: 'a'
two: 'b'
three: 'c1'
}
nestedArray: [
1
2
]
}
var secondObject = {
property: {
three: 'c2'
four: 'd'
five: 'e'
}
nestedArray: [
3
4
]
}
var firstArray = [
[
'one'
'two'
]
[
'three'
]
]
var secondArray = [
[
'three'
]
[
'four'
'two'
]
]
output objectOutput object = union(firstObject, secondObject)
output arrayOutput array = union(firstArray, secondArray)
المخرجات من المثال السابق هي:
Name | نوع | القيمة |
---|---|---|
objectOutput | الكائن | {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]} |
arrayOutput | صفيف | [["one","two"],["three"],["four","two"]] |
إذا تم دمج الصفائف المتداخلة، فستكون قيمة objectOutput.nestedArray [1, 2, 3, 4]، وستكون قيمة arrayOutput [["one", "two", "three"], ["three", "four", "two"]].
الخطوات التالية
- للحصول على وصف للأقسام في ملف Bicep، يُرجى الرجوع إلى فهم بنية وصيغة ملفات Bicep .