Member 13969616 Ответов: 2

Определение индекса в Рубин равен нулю и вернет false


Я пытаюсь определить метод, который проверяет, является ли данное пространство на доске пустым, и обратиться к сценариям, которые квалифицируются как пустое пространство, которое не равно буквальному " ".

Мои тесты не дали результата false/true, а вместо этого дали ноль.

Что я уже пробовал:

доска = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
деф position_taken?(доска, индекс)
если доска[индекс] == [" "] || ноль
ставит ложные
доска elsif[индекс] != [" "]
ставит истину
конец
конец
конец

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Мои тесты не дали результата false/true, а вместо этого дали ноль.

Причина в том, что ваш код не охватывает все случаи.
Попробуйте что-нибудь вроде этого:
board = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
def position_taken?(board, index)
    if board[index] == [" "] || nil # not sure what this is supposed to be
        puts false
    elsif board[index] != [" "]
        puts true
    else
        # put a warning message here and you will have surprise
    end
end
end

Причина в том, что board[index] == [" "] || nil и board[index] != [" "] не являются взаимодополняющими условиями.
В случае, если второе условие должно быть дополнением к первому, код должен быть просто:
board = [" ", " ", " ", " ", " ", " ", " ", " ", " "]
def position_taken?(board, index)
    if board[index] == [" "] || nil
        puts false
    elsif board[index] != [" "]
    else
        puts true
    end
end
end

Нота: я никогда не использовал Ruby, я просто знаю общие обычаи на других языках.


Рейтинг:
2

Member 13969616

деф position_taken?(доска, индекс)
если доска[индекс] == "" || совет[индекс] == мь || совет[индекс] == ""
возвращать false
доска elsif[индекс] != " "
вернуть true
конец
конец

Спасибо Вам за вашу помощь, я в конечном итоге нашел это решение работающим и в чем заключалась проблема, увидев, как вы интерпретировали мой код.