【问题标题】:Time.current.tap{|t| t.change hour: 10 } is not working in Rails 4.2Time.current.tap{|t| t.change hour: 10 } 在 Rails 4.2 中不起作用
【发布时间】:2019-11-12 23:23:19
【问题描述】:

我试过了

[107] pry(main)> t=Time.current
=> Tue, 02 Jul 2019 19:19:05 KST +09:00
[108] pry(main)> t.tap{|tt| tt.change hour: 10 }
=> Tue, 02 Jul 2019 19:19:05 KST +09:00
[109] pry(main)> t
=> Tue, 02 Jul 2019 19:19:05 KST +09:00

小时没有改变...

我期待

[110] pry(main)> t.tap{|tt| tt.change hour: 10 }
Tue, 02 Jul 2019 10:00:00 KST +09:00

我真的想要

[111] pry(main)> Time.current.tap{|t| t.change(hour: 10, min: t.min)}
Tue, 02 Jul 2019 10:19:00 KST +09:00

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-4.2 ruby-2.3


    【解决方案1】:

    change 返回一个新的时间对象,所以tap 会忽略这个值。你可以使用tap的兄弟yield_self(ruby 2.5+)

    t.yield_self{|tt| tt.change hour: 10 }
    

    【讨论】:

    • @chobo:查找和窃取实现是微不足道的。即使自己写一个也不应该太难:)
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2015-05-31
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多