ruby - Ruby 中除法运算符上带有空格的文字与变量

标签 ruby variables division literals

假设我有一个文字 Fixnum 1420028751000,我想使用它进行转换:

Time.at(1420028751000 / 1000) # => 2014-12-31 20:25:51 +0800

我也可以添加空格,假设我是初学者并且我的编码很糟糕:

Time.at(1420028751000      /     1000)
Time.at(1420028751000 /1000)

所有这些工作正常并给我正确的结果。

但是,一旦我引入了变量:

a = 1420028751000
Time.at(a/1000)   # => Works!
Time.at(a / 1000) # => Works!
Time.at(a /1000)  # => Strange thing happen

我的问题是,/1000 有什么独特之处,导致它在 Ruby 中引入变量时不起作用?

最佳答案

Ruby 的解析器将 /1000 解释为文字正则表达式的开头,因为 a 是一个可能是方法的标记。也就是说,假设 a 是一个方法:

def a(arg); end

Time.at(a /1000)

Ruby 会将其解释为“使用不完整的正则表达式作为参数进行调用”。为了“完成”此调用,Ruby 希望您可能想要执行以下操作:

Time.at( a(/1000/) )

关于ruby - Ruby 中除法运算符上带有空格的文字与变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28870020/

相关文章:

ruby http请求post方法

mysql - 无法通过 Ruby 和 MySQL2 连接到数据库

php - 替换 Mysql 中的 PHP 变量获取字符串

javascript - 如何在参数之类的函数中使用函数调用者变量?

Java 不明确的结果

java - 如何将一个持续时间除以另一个持续时间?

ruby - 创建类关系

ruby - 在 Ruby 中创建带有静态页面的博客的最佳方式

actionscript-3 - 如何在没有精度错误的情况下正确划分微小的 double 字?

c++ - 如何获得除法中带有十进制数的结果? C++, 树莓派