有点难以接受课堂上的一些代码

时间:2017-05-16 18:13:45

标签: ruby rubygems

我有点难以上课。因此,我应该为不同的酒店提供四个用户输入,并且价格不同。我的一些If语句出了问题。当我测试我的程序时说我放了" A"我得到一个错误说未初始化的常量C(NameError)。我只想查看用户是否放入A,B,C或D,然后继续执行if语句的其余部分。我想知道我的if语句是否有问题。这是我的代码。

choice1 = gets.chomp.capitalize.to_s

if choice1 == C then 
  puts "For how many nights?"
  nightsC == gets.chomp.to_i

  if nightsC == 3
    priceC == 700
    nightsT + nightsC
  else
    priceC == nightsC * 300
  end
end

这里是Pastebin https://pastebin.com/9c5ezuab

1 个答案:

答案 0 :(得分:2)

您正在引用未定义的类C,这就是您获得NameError的原因。如果您将C定义为类,则不会收到错误。但是gets将返回String的实例,例如"C",而不是类。你的语法错了。

# assignment
choice1 = "C"

# equality
choice1 == C # => NameError 

# define class
class C
end

# equality
choice1 == C # => false (no error this time)
choice1 == "C" # => true

顺便说一下,技术上C不是类的语法,而是常量。例如,您可以执行以下任一操作来定义C常量。

C = "hello"
C = Class.new
class C; end