Я не могу разорвать петлю - PullRequest
0 голосов
/ 06 февраля 2020

Моя программа не может выйти из l oop, если @ response == "201" должен сломать l oop.

class Hello
    def initialize(a, b)
        @a = a
        @b = b
    end

    def something()
        @response = "201"

    end
end

loop do
    puts "write something"
    a = gets.chomp
    puts "write something again"
    b = gets.chomp

    hello = Hello.new(a,b)
    hello.something()

    break if @response == "201"
end

Этот код приведен в качестве примера на другом.

1 Ответ

3 голосов
/ 06 февраля 2020

Ваш @response является переменной экземпляра, поэтому он инкапсулирован в вашем классе Hello и недоступен за его пределами. Одно из возможных (но не единственных) решений для работы вашего кода может быть следующим:

class Hello

    # Make @response available in the interface
    attr_reader :response

    def initialize(a, b)
        @a = a
        @b = b
    end

    def something()
        @response = "201"

    end
end

loop do
    puts "write something"
    a = gets.chomp
    puts "write something again"
    b = gets.chomp

    hello = Hello.new(a,b)
    hello.something()

    # using class property to stop the loop
    break if hello.response == "201"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...