gpt4 book ai didi

ruby-on-rails - 在 Rails 中向 Integer 类添加方法的最佳位置在哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:31 26 4
gpt4 key购买 nike

在 Rails 中向整数类添加方法的最佳位置在哪里?我想添加一个 to_metersto_miles 方法。

最佳答案

如果您决心使用数字(或整数等)类来进行单位转换,那么至少要在逻辑上做到这一点,并具有一些实际值(value)。

首先,创建一个 Unit 类,用于存储单位类型(米、英尺、肘等)和创建时的值。然后向 Numeric 添加一堆方法,这些方法对应于单元可以具有的有效值:这些方法将返回一个单元对象,其类型记录为方法名称。 Unit 类将支持一组 to_* 方法,这些方法将转换为具有相应单位值的另一种单位类型。这样,您可以执行以下命令:

>> x = 47.feet.to_meters
=> 14.3256
>> x.inspect
=> #<Unit 0xb795efb8 @value=14.3256, @type=:meter>

处理它的最佳方法可能是 Unit 类中的转换类型和表达式矩阵,然后使用 method_missing 检查给定类型是否可以转换为另一种类型。在数字类中,使用 method_missing 询问 Unit 是否支持给定方法作为单元类型,如果支持,则使用数字作为其值返回请求类型的单元对象。然后,您可以通过向扩展转换矩阵的 Unit 添加 register_type 和 register_conversion 类方法来支持在运行时添加单位和转换,而 Numeric 将“自动”获得该功能。

至于放在哪里,创建一个 lib/units.rb 文件,其中也包含 monkey_patch 到 Numeric,然后在 config/environment.rb 中初始化它,但需要 lib/units.rb 文件。

关于ruby-on-rails - 在 Rails 中向 Integer 类添加方法的最佳位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266819/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com