ruby - 在 Ruby 中按方法调用方法
问题描述
我有一个以我需要的格式生成电话号码的模块。
module PhoneNumber
def self.prefix
'+'
end
def self.country
rand(1..9).to_s
end
def self.code
rand(100..999).to_s
end
def self.number
rand(1000000..9999999).to_s
end
end
我使用它如下。或作为格式化字符串"#{}#{}"
。
phone_number = PhoneNumber.prefix +
PhoneNumber.country +
PhoneNumber.code +
PhoneNumber.number
我想以这种方式重写模块的主体,以便我可以以点格式使用它。
PhoneNumber.prefix.code.number
解决方案
我同意托德的观点,你不应该这样做;对于阅读代码的人(包括将来的您自己)来说,实施和混淆会很尴尬,因为这不是编写您正在谈论的那种操作的典型方式。
也就是说,如果您真的想这样做,您将需要提供一个调用的方法,该方法prefix
返回另一个具有方法的对象,code
依此类推,沿链存储状态并在最后组合字符串。如果您想交换订单,它会变得更加复杂。
强烈推荐一个看起来像这样的方法:
PhoneNumber.build(:prefix, :code, :number)
推荐阅读
- slick.js - 将 SlickJS AsNavFor 方法限制为父 div 的子级
- firebase - firebase 云功能模拟器中缺少 rawBody
- python - Redis:如何从 Lua 脚本 HMSET 字典?
- mysql - Concat函数在MySQL存储过程中不起作用
- angular - mat-form-field 轮廓正在触发验证边框颜色更改,而条件仍然为假
- apache-spark - 转置 DataFrame 的 Spark 性能
- html - 外部css文件一半在html中工作
- android - 评估表达式时的 Android 资源 $NotFoundException - Kotlin
- excel - 给定多个范围,如果满足多个条件,则隐藏行
- if-statement - 如果特定工作表已存在,则删除它