测试条件语句:if … then

上面的税率值计算代码的问题是允许负的合计值和税率,这种情况在政府看来可能是不利的。因此,我需要测试负数,如果出现负数将其置为 0 。这是我的新版代码:

5taxcalculator.rb
  1. taxrate = 0.175
  2. print "Enter price (ex tax): "
  3. s = gets
  4. subtotal = s.to_f
  5. if (subtotal < 0.0) then
  6. subtotal = 0.0
  7. end
  8. tax = subtotal * taxrate
  9. puts "Tax on $#{subtotal} is $#{tax}, so grand total is $#{subtotal+tax}"

Ruby 中的 if 测试语句与其他编程语言中的 if 相似。注意,这里的括号也是可选的,then 也一样。但是,你如果在测试条件之后没有换行符的情况下继续写代码,那么 then 不能省略:

  1. if (subtotal < 0.0) then subtotal = 0.0 end

将所有代码写在同一行不会增加代码的清晰度,我会避免这么写。我长期习惯于 Pascal 书写风格所以导致我经常在 if 条件之后添加 then,然而这真的是不需要的,你可以将其看成我的一个癖好。if 代码块末尾的 end 关键字不是可选的,忘记添加它的话你的代码将不会运行。