/ / xquery में एक चर के लिए एक ऑपरेटर असाइन करना - xquery

xquery - xquery में एक चर के लिए ऑपरेटर असाइन करना

वहाँ एक संख्यात्मक ऑपरेटर को Xquery में एक चर को असाइन करने का एक तरीका है?

मुझे नोड टैग के आधार पर दिए गए मानों की एक अंकगणितीय अभिव्यक्ति करनी है।

मैं ऐसा करने में कामयाब रहा, लेकिन इसके परिणामस्वरूप बहुत सारे डुप्लिकेट कोड थे। मैं "क्वेरी को सरल बनाना चाहता हूं ताकि इसके बजाय:

ऐड के लिए फ़ंक्शन

यदि कोड दोहराया जाता है - यह अन्य कार्यों के लिए कहता है लेकिन फिर भी दोहराया जाता है

$ value1 + $ value2

माइनस के लिए फ़ंक्शन

बार-बार अगर कोड

$ value1 - $ value2

आदि के लिए गुणा, div आदि

मैं एक फ़ंक्शन सेट करना चाहता हूं और इसके लिए एक चर भेजना चाहता हूं, जो इस तरह से कुछ है:

$ value1 $ ऑपरेटर $ value2

क्या xquery में ऐसा करने का एक सरल तरीका है?

आपके सहयोग के लिए धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

यदि आपका क्वेरी प्रोसेसर समर्थन करता है XQuery 3.0, आप उपयोग कर सकते हैं समारोह आइटम उसके लिए:

declare function local:foo($operator, $x, $y) {
let $result := $operator($x, $y)
return 2 * $result
};

local:foo(...) फिर इस तरह बुलाया जा सकता है:

let $plus := function($a, $b) { $a + $b },
$mult := function($a, $b) { $a * $b }
return (
local:foo($plus, 1, 2),
local:foo($mult, 3, 4)
)

जवाब के लिए 0 № 2

क्यों नहीं "टी आप एक सरल का उपयोग करते हैं-और निर्माण? जैसे।

if (repeated code says you should add) then
$value1 + $value2
else
$value1 - $value2

तुम भी सरल डाल सकता है बार-बार कोड कोड को कॉपी करने के बजाय दूसरे फ़ंक्शन में।