2016-03-03 5 views
6

xdmp:invoke के लिए दस्तावेज़ में, दूसरे तर्क के रूप में पैरामीटर पास करना संभव है।मापदंडों के साथ फोकस

xdmp:invoke-function के लिए यह विकल्प उपलब्ध नहीं है। क्या यह हासिल करने के लिए कोई कामकाज है?

किसी फ़ंक्शन में सूची मैप करना आसान है। जो मैं प्राप्त करने की कोशिश कर रहा हूं वह एक तरह का पहलू उन्मुख कार्य है जो इस तरह से बुलाए जाने वाले कार्यों के लिए सफल और असफल और मानक लॉग संदेश की जांच करता है। कुछ ऐसा:

declare function my-mapper ($array, $fn) { 
    (: standard logging and checks :) 

    for $a in $array 
    return try { 
     (: now call the function with parameter :) 
     xdmp:invoke-function($fn($a),<options>...</options>) 

    } catch ($e) { 
     (: standard housekeeping if something goes wrong :)  
     ... 
    } 
}) 


my-mapper($array, function ($item) { 
    (: do stuff with item :) 
}) 

क्या मार्कक्लिक का उपयोग करके XQuery में इसे प्राप्त करने का कोई तरीका है?

उत्तर

9

एक मुख्य मॉड्यूल निष्पादित करता है जिसमें संदर्भ के लिए कोई पहुंच नहीं है, और दूसरा उस संदर्भ के साथ एक फ़ंक्शन निष्पादित करता है। मुझे लगता है कि विचार यह है कि आपको आवेषण नलसाजी के माध्यम से पैरामीटर पारित करने की आवश्यकता नहीं है क्योंकि आप xdmp:invoke-function पर कॉल के हिस्से के रूप में उन्हें फ़ंक्शन में पास कर सकते हैं। आपको इसे 0-आर्टी फ़ंक्शन में लपेटने की आवश्यकता होगी:

xdmp:invoke-function(
    function() { $fn($a) }, 
    <options>...</options>) 
संबंधित मुद्दे