|() Contains ()?|
- "() Contains ()" redirects here. For the Operators block that checks if one string contains the other, see () Contains () (block).
The () Contains ()? block is a List block and a Boolean block. The block checks if any items in the specified list are equal to the given text —if at least one of them is, the block returns true; if none of them are, it returns false. The item must contain the exact text; for example, "abc" would not work if the item contained "abcde". This block is case-sensitive.
If an object must be checked if it is in a list or not, this block can be used.
Some common uses for the () Contains ()? block:
- Scanning lists
if <[lunch v] contains [spinach]?> then say [Yuck! Spinach!] end
- Checking if an item already exists before adding it to an inventory
if <not <[collection v] contains [fan]?>> then add [fan] to [collection v] else say [I already have a fan in my collection.] end
- Checking if a word is in a list of words
if <[words v] contains [chocolate]?> then say [Chocolate!? I'm allergic to chocolate!] End
- Making sure an item is in an inventory before performing a command.
if <[collection v] contains [fan]?> then broadcast [action v] else say [It's too far to reach the pile of sand on that platform.] end
- Main article: List of Block Workarounds
This block can be replicated with the following code:
set [count v] to  repeat until <<(count) > (length of [list v])> or <(item (count) of [list v]) = (thing)>> change [count v] by (1) end set [report v] to <(count) > (length of [list v])>
When it is needed,
<(report) = [true]> is placed into the boolean insert.
Using the workaround gives either an advantage or a disadvantage: this block is case-sensitive, while the equals block is not.