【问题标题】:Understanding what a particular proc code does了解特定 proc 代码的作用
【发布时间】:2014-08-06 18:18:33
【问题描述】:

我想了解这两个 proc 块的作用。我正在审查一些代码,我遇到了这个。

PARSE_TIME = Proc.new do |field|
Time.at(field.to_i / 1000)
end

RENDER_TIME = Proc.new do |field|
field.to_i * 1000
end

谢谢!

【问题讨论】:

  • 没有使用例子就很难说。我的猜测是您将时间戳存储在数据库中,但是您只需要大概的时间,并且您决定将其存储为没有最后 3 位数字(以节省空间?)。它还可以用于与另一个使用不同时间戳格式的 Web 服务进行通信。一切都取决于这些常量的实际使用情况。
  • 话虽如此:将 procs 保持为常量是错误的。

标签: ruby-on-rails ruby proc


【解决方案1】:

您可以将这些常量称为 next:

PARSE_TIME.call 1400000000000
# => "2014-05-13 18:53:20 +0200"
RENDER_TIME.call 100
# => 100000

这些方法有点奇怪,因为 Time.at 接受一个参数,该参数表示从 1970 年 1 月 1 日 (Unix or Epoch time) 开始的秒数,并且将此数字除以 1000 并不代表熟悉的东西。

另一个只将你的参数乘以 1000,这是一个非常愚蠢的操作,通常不值得单独使用函数。

问候

【讨论】:

  • 根据文档,实际上看起来Time.at 想要以自纪元以​​来的秒数形式输入,而不是毫秒。
猜你喜欢
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
  • 2021-02-06
  • 2012-05-11
  • 2014-09-05
  • 2013-08-23
相关资源
最近更新 更多