سؤال

هل هناك طريقة للقيام بالعوامل الثلاثية في السرعة؟وهذا ما أود أن أفعله:

#set ($name = ($args.get(0) == "") ? "default" : $args.get(0))

بدلاً من مكتنزة إذا كان آخر

#if ($args.get(0) == "")
    #set ($name = "default")
#else
    #set ($name = $args.get(0))
#end

أيه أفكار؟

هل كانت مفيدة؟

المحلول

من تجربة وقراءة مرجع VTL لا توجد طريقة لانجاز ذلك.إذا كان لديك الكثير من المهام مثل هذه، فربما يمكنك النظر في تعريف السرعة القصوى الخاصة بك لمحاولة تجنب تكرار ما إذا كان هناك شيء آخر.

على سبيل المثال، إذا كان الماكرو يطبع سلسلة واحدة فقط، فيمكنك القيام بما يلي:

#set ($name = "#condOpt($args.get(0), "default")")

تعتبر علامات الاقتباس المزدوجة حول استدعاء الماكرو مهمة لأن ذلك يعني أنه تم تحليل RHS الخاص بـ #set.

نصائح أخرى

انتهى بي الأمر كما قلت، مارك:

#macro(condOp $check, $default)
    #if ($check == "")
        $default
    #else
        $check
    #end
#end

وبعد ذلك يمكنني أن أسميها هكذا:

#set ($name = "#condOp($args.get(0), 'default')")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top