Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个ruby代码做什么?_Ruby - Fatal编程技术网

这个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文档吗?你知道怎么读吗?