From Test-Scratch-Wiki
Item # of () in () | |
(item # of [] in [ v])
| |
Category | List |
Type | Reporter |
Introduced in | 3.0 |
इस लेख का सही शीर्षक है: आइटम # () में ()। नाम परिवर्तन तकनीकी सीमाओं के कारण किया गया है।
() में () का आइटम नंबर एक सूची ब्लॉक और एक रिपोर्टर ब्लॉक है। यह ब्लॉक उस आइटम के सूचकांक को रिपोर्ट करता है जहां वह पहली बार सूची में प्रकट होता है। यदि एक आइटम एक से अधिक बार प्रकट होता है, तो यह उसकी पहली उपस्थिति का सूचकांक रिपोर्ट करता है। यदि आइटम सूची में नहीं पाया जाता है, तो यह 0 रिपोर्ट करता है। यह केवल दो रिपोर्टर ब्लॉक्स में से एक है, जिसे एक बूलियन इनपुट के रूप में डाला जा सकता है। दूसरा ब्लॉक () का आइटम () (ब्लॉक) है।
उदाहरण
when gf clicked delete all of [list v] add [a] to [list v] add [b] to [list v] add [c] to [list v] add [b] to [list v] say (item # of [c] in [list v]) //कहता है ३ क्योंकि c सूची में तीसरा आइटम है say (item # of [b] in [list v]) //सभी ब के पहले स्थान की पहली उपस्थिति सूची में दूसरी जगह है। say (item # of [d] in [list v]) //कहता है 0 क्योंकि d सूची में नहीं है
काम का समाधान
यह काम सूची में प्रत्येक आइटम को क्रम से देख कर किया जा सकता है और यह जांचा जा सकता है कि क्या इनमें से कोई आइटम उस वस्तु के समान है जिसे खोजा जा रहा है।
define item # of (search term) in list set [counter v] to (0) set [result v] to (0) repeat (length of [list v]) change [counter v] by (1) if <(item (counter) of [list v])=(search term)> then set [result v] to (counter) stop [this script v] end end
या
define item # of (string) in list set [result v] to [0] if <[list v] contains (string)?> then repeat until <(item (result) of [list v]) = (string)> change [result v] by (1) end end
बूलियन इनपुट
हालांकि यह एक रिपोर्टर ब्लॉक है, यह ब्लॉक एक बूलियन इनपुट में डाला जा सकता है। यह इस विशेष संपत्ति के साथ एकमात्र ब्लॉक है, इसके अलावा आइटम () के ()।चूंकि सभी संख्याएँ 0 को छोड़कर सही में परिवर्तित होती हैं, इसलिए यह ब्लॉक केवल तभी सत्य लौटाता है जब इनपुट किया गया स्ट्रिंग सूची में मौजूद हो। यह इसके समान है <[ v] contains []?>
ब्लॉक, जिससे यह तथ्य कि यह ब्लॉक एक बूलियन इनपुट में हो सकता है, काफी बेकार हो जाता है।
संबंधित सुझाव
कुछ स्क्रैचर्स एक ऑपरेटर ब्लॉक की इच्छा व्यक्त कर रहे हैं जो एक स्ट्रिंग के किसी अन्य स्ट्रिंग में उपस्थित होने की रिपोर्ट करे। यह ब्लॉक इस तरह से दिखेगा:
(letter # of () in ():: operators)
हालाँकि, इस कोड के माध्यम से इसे हल किया जा सकता है:
define letter # of (letter) in (string) set [counter v] to (0) set [result v] to (0) repeat (length of (string)) change [counter v] by (1) if <(letter (counter) of (string))=(letter)> then set [result v] to (counter) stop [this script v] end end
नोट: केवल तब काम करता है जब अक्षर की लंबाई 1 हो।