Ruby 如何要求用户输入并存储输入,然后显示

Ruby 如何要求用户输入并存储输入,然后显示,ruby,Ruby,我正在尝试创建一个简单的交互式Ruby应用程序。我希望用户能够输入信息,然后让程序显示输入的信息 class Player def initialize(name, position, team) @name = name @position = position @team = team end def get_player_info puts "Who is your favorite NFL player?" name = gets.c

我正在尝试创建一个简单的交互式Ruby应用程序。我希望用户能够输入信息,然后让程序显示输入的信息

class Player
  def initialize(name, position, team)
    @name = name
    @position = position
    @team = team
  end

  def get_player_info
    puts "Who is your favorite NFL player?"
    name = gets.chomp

    puts "What position does #{name} play?"
    position = gets.chomp

    puts "What team does #{name} play for?"
    team = gets.chomp
  end

  def player_info()
    "#{@name} plays #{@position} for the #{@team}."
  end

end

# Get player info by calling method
get_player_info()

# Display player info
player_info()
现在,我得到了这个错误:

object_oriented.rb:26:in `<main>': undefined method `get_player_info' for main:Objec
t (NoMethodError)
object\u-oriented.rb:26:in`':未定义main:Objec的方法“get\u player\u info”
t(命名错误)

这里缺少什么?

您正在调用的方法是
Player
类上的实例方法,这意味着您需要创建
Player
的实例才能调用它们

按照您定义类的方式,如果您想创建一个新类(使用
Player.new
),则需要提供所有三个值才能使其工作(
Player.new(“Mike”、“Center”、“Spartans”)
)。这与您希望在实例方法中设置变量无关

要评论您现有的代码,我不会在
Player
类中使用
chomp
Player
类应该只关注播放器的状态。如果你想设置值,我会在外面做所有的提示

class Player
  attr_accessor :name, :position, :team

  def player_info
    "#{name} plays #{position} for #{team}"
  end
end

player = Player.new

puts "Who is your favorite NFL player?"
player.name = gets.chomp

puts "What position does #{player.name} play?"
player.position = gets.chomp

puts "What team does #{player.name} play for?"
player.team = gets.chomp

puts player.player_info
# => "Mike plays Center for Spartans"

运行该代码时,我得到了面向对象的.rb:14:in
':未定义的局部变量或main:object(namererror)的方法
name',啊,我忘了将
player.
添加到其他方法调用中。在每个提示中,您都试图访问
player
对象的状态,因此需要对该对象调用
name
方法。我会更新的,好的,我知道了。另一件事是我必须使用puts player.player_info来显示方法结果。