groovy
Currying
खोज…
वाक्य - विन्यास
- closure.curry (पैरामीटर)
- closure.rcurry (पैरामीटर)
- closure.ncurry (इंडेक्स, पैरामीटर ...)
टिप्पणियों
एक करीने से करीने से एक निश्चित मूल्य वाले पैरामीटर के एक या अधिक के साथ एक नया बंद हो जाता है
बाईं या दाईं ओर एक बंद कोई पैरामीटर या सूचकांक है कि आधारित currying को बंद करने की तुलना में कम दो पैरामीटर है कि currying एक फेंकता
IllegalArgumentException
बाईं करवट लेना
def pow = { base, exponent ->
base ** exponent
}
assert pow(3, 2) == 9
def pow2 = pow.curry(2) //base == 2
assert pow2(3) == 8
सही करी
def dividable = { a, b ->
a % b == 0
}
assert dividable(2, 3) == false
assert dividable(4, 2) == true
def even = dividable.rcurry(2) // b == 2
assert even(2) == true
assert even(3) == false
सूचकांक आधारित करी
def quatNorm = { a, b, c, d ->
Math.sqrt(a*a + b*b + c*c + d*d)
}
assert quatNorm(1, 4, 4, -4) == 7.0
def complexNorm = quatNorm.ncurry(1, 0, 0) // b, c == 0
assert complexNorm(3, 4) == 5.0
कोई स्पष्ट पैरामीटर के साथ करी बंद करना
def noParam = {
"I have $it"
}
def noParamCurry = noParam.curry(2)
assert noParamCurry() == 'I have 2'
कोई मापदंडों के साथ करीने बंद करना
def honestlyNoParam = { ->
"I Don't have it"
}
// The following all throw IllegalArgumentException
honestlyNoParam.curry('whatever')
honestlyNoParam.rcurry('whatever')
honestlyNoParam.ncurry(0, 'whatever')
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow