Menu
CoddyTech

القيم الافتراضية للمنطقية

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy. الدرس 28 من 80.

هناك تنبيه تعرفه من Lua: العامل or يستبدل أيضًا false. بالنسبة إلى وسيط boolean? الذي ينبغي أن تكون قيمته الافتراضية true، فإن flag = flag or true يحوّل قيمة false الصريحة إلى true، لأن false or true تساوي true:

local function sendAlert(message: string, loud: boolean?)
    loud = loud or true   -- لا تزال sendAlert("Hi", false) تحصل على true
    print(message, loud)
end

استخدم بدلًا من ذلك فحصًا صريحًا لـ nil. فهو يضع القيمة الافتراضية فقط عندما لا تكون قد مرّرت الوسيط:

local function sendAlert(message: string, loud: boolean?)
    if loud == nil then
        loud = true
    end
    print(message, loud)
end

sendAlert("Hi")         -- Hi  true
sendAlert("Hi", false)  -- Hi  false

بالنسبة إلى السلاسل النصية والأعداد، يكون استخدام or آمنًا، لأن nil وfalse فقط قيمتان زائفتان.

challenge icon

التحدي

سهل

امنح معاملًا منطقيًا قيمة افتراضية true لا يمكن لـ false إلغاؤها.

  1. اكتب local function shippingCost(weight: number, insured: boolean?): number.
  2. ابدأها بـ if insured == nil then insured = true end.
  3. أعِد weight * 0.5 + 2 عندما تكون insured قيمتها true، وإلا فأعِد weight * 0.5.
  4. اطبع shippingCost(4) وshippingCost(4, false).

اضغط على Run Code: ينتهي الناتج بـ 4 و2.

جرّب بنفسك

-- القيمة الافتراضية باستخدام أسلوب `or`
local function calculateTax(price: number, rate: number?): number
    rate = rate or 0.05
    return price * rate
end

print(calculateTax(100))
print(calculateTax(200, 0.08))

جميع دروس مقدمة إلى Luau

تدرّب بنفسك: مترجم Luau عبر الإنترنت