Как найти первый элемент блока строк, первый символ которого соответствует входному символу?

Учитывая weapons: ["rock" "scissors" "paper"]

Если бы я сделал player-choice: ask "(r)ock, (p)aper, (s)cissors or (q)uit? "

как я мог искать введенный пользователем символ в блоке с прикрепленным к нему словом weapons


red
person Terrence Brannon    schedule 20.01.2019    source источник


Ответы (2)


Если вам нужно только одно совпадение и использовать только фактические имена элементов в вашем блоке, ваше собственное решение подойдет. Но одна из важных вещей в Red — это то, как вы можете структурировать свои данные, чтобы упростить работу. Например, если вы хотите выбрать элементы из списка только на основе известного ключа (например, первого символа), вы можете сделать это явным, а не неявным.

weapons: ["r" "rock" "s" "scissors" "p" "paper"]
player-choice: ask "(r)ock, (p)aper, (s)cissors or (q)uit? "
print select weapons player-choice
person Gregg Irwin    schedule 22.01.2019

Если вы хотите, чтобы блок начинался с найденного, удалите index?

switch player-choice [
    "r" [index? find weapons "rock"]
    "s" [index? find weapons "scissors"]
    "p" [index? find weapons "paper"]
    "q" ["quit"]
]
person Time Series Lord    schedule 05.09.2019