आप आसानी से एक समारोह के लिए एक टपल के माध्यम से एक अंडाकार के साथ पारित कर सकते हैं "सामान्य" (यानी गैर कीवर्ड) चर मान, जैसे की तरह:कैसे tuples
julia> f(x, y, z) = x + y + z;
julia> f(0, 1, 2)
3
julia> varvalues = 0, 1, 2
(0,1,2)
julia> f(varvalues...)
3
लेकिन कीवर्ड चर के लिए, आप चर के माध्यम से कीवर्ड और संबंधित चर दोनों मान कैसे पास करते हैं? उदा। (मूर्ख उदाहरण माफ): कीवर्ड के साथ keywords
और इसी चर मान के साथ keywordvarvalues
, कि g
कार्य करने के लिए पारित किया जा सकता:
julia> function g(x, y, z; operation = "add", format = "number")
operation == "add" && format == "number" && return x + y + z
operation == "add" && format == "string" && return string(x + y + z)
operation == "times" && format == "number" && return x * y * z
operation == "times" && format == "string" && return string(x * y * z)
end; # yep, I know this not type-stable
julia> g(0, 1, 2, operation = "times", format = "string")
"0"
julia> g(varvalues..., operation = "times", format = "string") # varvalues = (0,1,2)
"0"
तो मैं दो चर, ऊपर varvalues
के अनुरूप परिभाषित करना चाहते हैं। कुछ इस तरह है, लेकिन यह काम करता है:
julia> keywords = :operation, :format
(:operation,:format)
julia> keywordvarvalues = "times", "string"
("times","string")
julia> g(varvalues..., keywords... = keywordvarvalues...)
ERROR: MethodError: no method matching broadcast!...
मुझे लगता है मैं हमेशा keywords
और keywordvarvalues
से इस स्ट्रिंग रचना कर सकते हैं:
expressionstring = """g(varvalues..., operation = "times", format = "string")"""
और फिर इसे पार्स-eval, लेकिन वह prolly बुरा व्यवहार नहीं है,?
अर्धविराम चाल :) – tim
वास्तव में मैं क्या चाहता था करता है! धन्यवाद। –