让我的程序正确检查外部完成(ext)和我之前创建的对象实例之间的相等性,我遇到了一些麻烦。是instance_of?问题在这里,因为我没有正确使用它?
##################################################
class Wood
end
class Brick
end
class Other
end
#################################################
asbestos = Wood.new #'Wood'
cement_board = Wood.new #'Wood'
frame_clapboard = Wood.new #'Wood'
vinyl = Wood.new #'Wood'
asphalt = Wood.new #'Wood'
wood_shake = Wood.new #'Wood'
brick_stone = Brick.new #'Brick'
brick_stone_veneer = Brick.new #'Brick'
concrete = Brick.new #'Brick'
glass = Other.new #Other Not Supported
other = Other.new #Other Types Not Supported
stucco = Other.new #Not Suppored
aluminum = Other.new #Not supported
#################################################
puts "Enter name of Exterior Finish: "
ext = gets.chomp
puts"Enter year of building completion: "
year = gets.chomp
if ext.instance_of? Wood
puts "Tis Wood\n"
if year.to_i.between?(1850, 1942)
print "pre war wood\n"
elsif year.to_i.between?(1943, 1977)
print "post war wood\n"
elsif year.to_i.between?(1978, 2005)
print "near present wood\n"
elsif year.to_i.between?(2006, 2014)
print "present wood\n"
end
elsif ext.instance_of? Brick
puts "Tis Brick\n"
if year.to_i.between?(1850, 1942)
print "pre war brick\n"
elsif year.to_i.between?(1943, 1977)
print "post war brick\n"
elsif year.to_i.between?(1978, 2005)
print "near present brick\n"
elsif year.to_i.between?(2006, 2014)
print "present brick\n"
end
else
print "Of Type Not Supported\n"
end
答案 0 :(得分:0)
class Wood
end
class Brick
end
class Other
end
#################################################
asbestos = Wood.new #'Wood'
cement_board = Wood.new #'Wood'
frame_clapboard = Wood.new #'Wood'
vinyl = Wood.new #'Wood'
asphalt = Wood.new #'Wood'
wood_shake = Wood.new #'Wood'
brick_stone = Brick.new #'Brick'
brick_stone_veneer = Brick.new #'Brick'
concrete = Brick.new #'Brick'
glass = Other.new #Other Not Supported
other = Other.new #Other Types Not Supported
stucco = Other.new #Not Suppored
aluminum = Other.new #Not supported
#################################################
puts "Enter name of Exterior Finish: "
ext = gets.chomp
ext=eval (ext) rescue nil # this will convert entered text to corresponding class or instance or if user enter invalid text then it will set ext = nil
puts"Enter year of building completion: "
year = gets.chomp
if ext.is_a? Wood
puts "Tis Wood\n"
if year.to_i.between?(1850, 1942)
print "pre war wood\n"
elsif year.to_i.between?(1943, 1977)
print "post war wood\n"
elsif year.to_i.between?(1978, 2005)
print "near present wood\n"
elsif year.to_i.between?(2006, 2014)
print "present wood\n"
end
elsif ext.is_a? Brick
puts "Tis Brick\n"
if year.to_i.between?(1850, 1942)
print "pre war brick\n"
elsif year.to_i.between?(1943, 1977)
print "post war brick\n"
elsif year.to_i.between?(1978, 2005)
print "near present brick\n"
elsif year.to_i.between?(2006, 2014)
print "present brick\n"
end
else
print "Of Type Not Supported\n"
end