繁体   English   中英

如何在Ruby中使用哈希值

[英]How to use Hash values in ruby

我写了一个小的Ruby程序,但是无法访问存储在父类中的哈希值。

这是代码:

class College
  @@dep = ["cs" => 60000, "mat" => 20000, "che" => 30000]
end

class Student < College
  def get_det
    puts "Enter name... \n"
    @name = gets
    puts "Enter department...\n"
    @dpt = gets
  end

  def set_fee
    case @dpt
    when "cs"
      @fee = (@@dep["cs"]).to_i
    when "mat"
      @fee = @@dep["mat"].to_i
    when "che"
      @fee = @@dep["che"].to_i
    else
      puts "Eror!!!"
    end
  end

  def print_det
    puts "Name : #{@name}"
    puts "Department : #{@dpt}"
    puts "Course fee : #{@fee}"
  end
end

det = Student.new

det.get_det
det.set_fee
det.print_det

我得到的输出为:

输出:

您已将@@dep变量定义为数组,而不是哈希。 您需要将{ } [ ]替换为{ } ,如下所示:

@@dep = {"cs" => 60000, "mat" => 20000, "che" => 30000}

然后,您将可以通过字符串键访问您的哈希值:

@@dep['cs']  # Will return 6000

仅供参考,您的set_fee方法可以重构为:

def set_fee
  @fee = @@dep[@dpt] || 'Error!'
  puts @fee
end

由于您只是为每个when语句传递要检查的值,因此可以直接将值直接传递给@@dep对象。 而且您不需要to_i ,因为哈希中的值已经是整数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM