【问题标题】:How to write a helper method in ruby to reduce code duplication?如何在 ruby​​ 中编写辅助方法以减少代码重复?
【发布时间】:2022-11-18 10:00:24
【问题描述】:

我对 ruby​​ 和 tbh 编程真的很陌生。我正在尝试使用以下代码,以便使用 switch case 对多种口味执行相同的操作,如下所示 -

def Icecream
...
...
Value = case flavors
         when 'STRAWBERRY'
         (shop.straw * 1000).round(5)
         when 'CHOCOLATE'
         (shop.choc * 1000).round(5)
         when 'VANILLA'
         (shop.van * 1000).round(5)
         when 'MANGO'
         (shop.man * 1000).round(5)
         end
...
...
end

如何创建辅助方法来减少代码重复?这可能是一个愚蠢的问题,但对学习真的很有帮助。提前致谢!

因此,shop.straw 为我提供了一个双倍值,我将其乘以 1000 并四舍五入。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    你可以做几件事。最简单的解决方案可能是采用“双精度值”作为参数的解决方案,如下所示:

    def calculation(flavor)
      (flavor * 1000).round(5)
    end
    

    然后,您的案例陈述将是:

    Value = case flavors
            when 'STRAWBERRY'
              calculation(show.straw)
            when 'CHOCOLATE'
              calculation(show.choc)
            when 'VANILLA'
              calculation(show.van)
            when 'MANGO'
              calculation(show.man)
            end
    

    如果需要,您可能可以进一步简化它,但这是主要思想。

    【讨论】:

    • 非常感谢你做的这些!我有一个愚蠢的疑问。那么,这个辅助方法应该在 Icecream 方法内部还是方法外部声明?
    • 无论父级是什么,您都希望在相同的上下文(无论是模块还是类)中将它放在外面。
    • 那么,在同一个类的某个地方的方法 Icecream 之外?
    猜你喜欢
    • 2011-04-24
    • 2021-05-20
    • 1970-01-01
    • 2018-10-09
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多