為了簡單起見,我制作了以下兩個類。我想在第一節課中給出的資訊,并在整個程式的其他課程中使用它。但是,我似乎無法讓變數保留用戶給定的值。
class Input
attr_accessor :input
def initialize
@input = input
end
def call
get_input
# Changer.new.change(@input)
output
end
def get_input
puts "please write a number"
@input = gets.chomp.to_s
end
def output
p Changer.new.change(@input)
end
end
class Changer < Input
def change(input)
if @input == "one"
@input = "1"
elsif @input == "two"
@input = "2"
elsif @input == nil
"it's nil"
else
"something else"
end
end
end
Input.new.call
我已經嘗試了上述類的一些變體,一些帶有繼承,一些沒有,初始化或不等。它們似乎都輸出“nil”。請指教。感謝您的時間。
uj5u.com熱心網友回復:
當 change 方法Changer運行時,@input是一個特定于該Changer實體的實體變數,它為 nil。
您希望您的change方法處理input提供給它的引數,而不是@input.
def change(input)
if input == "one"
"1"
elsif input == "two"
"2"
elsif input == nil
"it's nil"
else
"something else"
end
end
或者更好:
def change(input)
case input
when "one"
"1"
when "two"
"2"
when nil
"it's nil"
else
"something else"
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/356618.html
