这个ruby代码做什么?
我这里有验证零和浮点数输入的代码:这个ruby代码做什么?,ruby,Ruby,我这里有验证零和浮点数输入的代码: def integer?(input) input.to_i.to_s == input end def float?(input) input.to_f.to_s == input end def valid_number?(input) integer?(input) || float?(input) end loop do # main loop number1 = '' loop do prompt(messages(
def integer?(input)
input.to_i.to_s == input
end
def float?(input)
input.to_f.to_s == input
end
def valid_number?(input)
integer?(input) || float?(input)
end
loop do # main loop
number1 = ''
loop do
prompt(messages('first_number', LANGUAGE))
number1 = Kernel.gets().chomp()
if valid_number?(number1)
break
else
prompt(messages('not_a_valid_number', LANGUAGE))
end
end
number2 = ''
loop do
prompt(messages('second_number', LANGUAGE))
number2 = Kernel.gets().chomp()
if valid_number?(number2)
break
else
prompt(messages('not_a_valid_number', LANGUAGE))
end
end
end
result = case operator
when '1'
number1.to_i() + number2.to_i()
when '2'
number1.to_i() - number2.to_i()
when '3'
number1.to_i() * number2.to_i()
else
number1.to_f() / number2.to_f()
end
prompt("The answer is: #{result}")
用外行的术语或假人可以理解的解释,该代码做了什么
def integer?(input)
input.to_i.to_s == input
end
def float?(input)
input.to_f.to_s == input
end
def valid_number?(input)
integer?(input) || float?(input)
end
有人帮忙吗?如果你能逐行解释,我将不胜感激。谢谢
对不起,这里是新手 在这些函数中,
输入被转换为一个数字(使用转换为i
的整数或使用(转换为f
)的浮点),然后返回到字符串(使用转换为s
)。然后将这些转换的结果与输入进行比较
它验证输入是否为数字,因为如果不是,转换后的字符串将不等于原始字符串
例如:
$ "a".to_i.to_s
=> "0"
因为to_i
如果字符串无法解析为整数(),则返回0。它所做的只是将字符串转换为整数/浮点,将其转换回字符串,并将其与输入字符串进行比较。如果输入是有效的整数/浮点,则其转换值将与输入相同。但是,如果输入不是有效数字,将其转换为整数或浮点将使其变为零,这与原始输入不同。下面是一个例子:
irb(main):012:0> "abc".to_i.to_s
=> "0"
irb(main):013:0> "123".to_i.to_s
=> "123"
因此,正如您所见,非数字输入将无法通过检查。您的问题太广泛了。你需要缩小范围,告诉我们你到底不懂什么,你真正懂什么,你的知识水平是什么,等等。你发布的代码使用了Ruby所有特性中的很大一部分,而且完全不清楚你在谈论哪些特性。你知道什么是物体吗?你知道什么是方法吗?你知道什么是信息发送吗?你了解方法、过程、函数和其他类型的子程序之间的区别吗?您了解动态即席包含多态性吗?你知道什么是类吗?你知道什么是方法定义吗?你知道什么是变量吗?你知道什么是争论吗?你知道什么是参数吗?你知道参数和参数之间的区别和关系吗?你知道布尔值是什么吗?你知道Ruby是如何定义真假的吗?你知道接线员是什么吗?你知道Ruby中的字符串是什么吗?你知道Ruby中的整数是什么吗?你知道Ruby中的float是什么吗?您知道运算符语法与消息发送的关系吗?你知道在哪里可以找到Ruby文档吗?你知道怎么读吗?