我在Ruby遇到了一个问题,我似乎无法在网上找到答案。
我有一些表单,其中一个表单,如果没有输入任何内容,我会尝试将age
的值设置为nil
。
这是我现在所拥有的相关部分:
puts "What is #{name}'s estimated age?"
age = gets.to_i
def set_nils
age = nil if age.blank?
end
我尝试了一些不同的想法,但似乎没有任何改变我的最终输出(只是打印年龄)。
答案 0 :(得分:2)
问题在于,如果您不输入任何内容作为输入并将此\n
转换为整数,则该值将变为0,因为:
irb(main):008:0> '\n'.to_i
=> 0
因此,您应该改为:
puts "What is #{name}'s estimated age?"
input = gets.to_i
@age = input > 0 ? input : nil
def set_nils
@age ||= nil
end
有效年龄(> 0)的输出:
irb(main):001:0> name = "Tim"
=> "Tim"
irb(main):002:0> puts "What is #{name}'s estimated age?"
What is Tim's estimated age?
=> nil
irb(main):003:0> input = gets.to_i
8
=> 8
irb(main):004:0> @age = input > 0 ? input : nil
=> 8
irb(main):005:0>
irb(main):006:0* def set_nils
irb(main):007:1> @age ||= nil
irb(main):008:1> end
=> nil
irb(main):009:0> set_nils
=> 8
年龄无效的输出(< 0):
irb(main):017:0> name = "Tim"
=> "Tim"
irb(main):018:0> puts "What is #{name}'s estimated age?"
What is Tim's estimated age?
=> nil
irb(main):019:0> input = gets.to_i
-1
=> -1
irb(main):020:0> @age = input > 0 ? input : nil
=> nil
irb(main):021:0>
irb(main):022:0* def set_nils
irb(main):023:1> @age ||= nil
irb(main):024:1> end
=> nil
irb(main):025:0> set_nils
=> nil