मेरे पास यह जानने के लिए कोई उपयोगी कारण नहीं है, लेकिन मैं सोच रहा था कि मेरे पास $x
जैसे नाम हैं, यदि वह एक स्केलर वेरिएबल (परिवर्तनीय चीज़) था या केवल कुछ (अपरिवर्तनीय चीज़) के लिए नाम था। मैं कुछ भी पूरा करने की कोशिश नहीं कर रहा हूं; यह जिज्ञासा है।मैं कैसे बता सकता हूं कि कुछ पर्ल 6 कंटेनर है या नहीं?
मैं कुछ इस तरह के साथ चारों ओर खेल रहा था:
my @a = 'a', ('b', 'c');
my @b = 'd', 'e', 'f', @a;
my @ab = @a, @b, (1, 2);
for @ab {
put "name: {.^name} VAR: { .VAR.^name }";
when .VAR.can('FETCH') { put "Container: $_" }
when .VAR.can('STORE') { put "Container: $_" }
when Scalar { put "Scalar container: $_" }
when Array { put "Array Container: $_" }
default { put "Object: $_" }
}
मैं:
name: Array VAR: Scalar
Array Container: a b c
name: Array VAR: Scalar
Array Container: d e f a b c
name: List VAR: Scalar
Object: 1 2
मैं देख सकता हूँ कि मैं प्रकार Array
प्रकार मैचों मिलान कर सकते हैं, लेकिन मैं जाँच सोचा कि कुछ कर सकते हैं कि FETCH
या STORE
सही मिलान होगा।
यह सुनिश्चित नहीं है कि आप क्या पूछ रहे हैं क्योंकि आप पहले से ही 'VAR' के बारे में जानते हैं; निचले स्तर पर, मूल कंटेनर – Christoph
के लिए 'nqp :: iscont',' nqp :: isrwcont' और 'nqp :: iscont_ [ins]' भी है, VAR की जांच करना प्रतीत नहीं होता है। मैं बाद में जवाब संशोधित करूंगा। –
याद रखें कि सरणी उनके मूल्यों को कंटेनरइज़ करते हैं। तो आपके उदाहरण में, '@ ab' के प्रत्येक तत्व को कंटेनर में लपेटा गया है, इससे कोई फर्क नहीं पड़ता कि इसे कंटेनर में लपेटने से पहले इसे '@ ab' में रखा गया हो। – smls