【问题标题】:How to store data taken from user in an array如何将用户获取的数据存储在数组中
【发布时间】:2019-02-25 10:32:32
【问题描述】:

我正在命令行上开发医院管理系统。我想从用户那里获取一个值,将它分配给一个实例变量,然后将它进一步存储在一个数组中。代码如下:

def doctor_details
  @doctors = Array.new
  puts 'Enter Doctor Name'
  @doc_name = gets
  @doctors << @doc_name 
  puts 'Enter specialization'
  @doc_specialization = gets
  puts 'Availability of doctor'
  @from = Float(gets)
  @to = Float(gets)
end

每次输入新值时,都会覆盖之前的值。

【问题讨论】:

  • 当前发布的方法将接受一次输入,在下一次来自irb的调用中,实例值将被重置。将数组初始化保留在方法之外或将 \@doctors = Array.new 替换为 @doctors ||= Array.new。我还建议使用哈希来保留医生的详细信息以及他们的特定专业和可用性。
  • 您只将医生的姓名推送到数组中。它将如何覆盖以前的值?

标签: ruby instance-variables


【解决方案1】:

无论您编写了什么,它都会将输入附加到该特定运行的实例变量@doctors,即该特定@doctor。如果您需要将所有医生的详细信息存储在一个实例变量中,请在方法外部声明它,然后像下面那样运行它。如果您将医生详细信息存储为像 DOCTORS = [[DOCTOR1_DETAILS],[DOCTOR1_DETAILS]] 这样的数组数组会更好,您可以这样做

@DOCTORS = []
def doctor_details
  @doctor =[]
  puts 'Enter Doctor Name'
  doc_name = gets
  @doctor << doc_name 
  puts 'Enter specialization'
  doc_specialization = gets
  @doctor << doc_specilalization
  puts 'Availability of doctor'
  from = Float(gets)
  to = Float(gets)
  @doctor << from
  @doctor << to
  @doctors << @doctor
end

或者你可以简单地使用 .push 方法将整个细节附加到一个数组中

@doctors = []
def doctor_details
  puts 'Enter Doctor Name'
  doc_name = gets
  puts 'Enter specialization'
  doc_specialization = gets
  puts 'Availability of doctor'
  from = Float(gets)
  to = Float(gets)
  @doctors.push([doc_name,doc_specialization,from,to])
end

【讨论】:

  • @Neha 你遇到了什么问题
  • 我得到了解决方案。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2016-05-17
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 2019-02-09
相关资源
最近更新 更多