ruby - 如何在Ruby中添加另一个方法之后调用的方法
问题描述
有一个类有很多方法,都返回字符串(url)。我想添加在之前的任何方法之后调用的新方法,这会向 url 添加额外的参数。示例是:
Class.method.my_method
返回
www.domain.com/xxx/xxx?my_method_return
这样做的最佳方法是什么?
还有什么来源可以找到类似问题的解决方案吗?我把它贴在这里,因为我不确定我还能在哪里寻找答案。
解决方案
您的符号Class.method
表示一个类方法。但是您的描述听起来像是一种标准方法Class#method
。澄清一下,后者等价于Class.new.method
。我在这里假设您的问题与后者有关。
我认为标准策略是使用一个实例变量来保存到目前为止处理的 url 的信息。这是一个例子。
class MyClass
attr_reader :url # defines the reading method "url"
def initialize(baseurl)
@url = baseurl
end
def my_method1
@url << "?" + "my_method1_return"
end
def my_method2
@url << "?" + "my_method2_return"
end
end
my_url = MyClass.new('www.domain.com/xxx/xxx')
string_url0 = my_url.url # => 'www.domain.com/xxx/xxx'
string_url1 = my_url.my_method1 # => 'www.domain.com/xxx/xxx?my_method1_return'
string_url2 = my_url.my_method2 # => 'www.domain.com/xxx/xxx?my_method1_return?my_method2_return'
my_url.url # == string_url2 == 'www.domain.com/xxx/xxx?my_method1_return?my_method2_return'
至于一般信息来源,我认为这个问题与 OOP 的基本设计模式有关,正如正确标记的那样。所以,我想不出任何捷径,但程序员多年来通过教科书、实际编程等学习它......
推荐阅读
- php - 使用语言环境时未找到 404
- java - 如何在@Query 注释中使用参数的方法
- azure - Azure VM 加密:aadAppname
- mysql - SQL:从另一个数据集中添加多个列
- jmeter - 如何将值bean shell采样器发送到jmeter中的rest api
- javascript - 有没有办法获取模型元素的坐标?
- python - 如果没有命中,则合并 2 个数据框并添加 NaN
- tkinter - 使用 cx_freeze 创建的 tkinter 应用程序的 MSI 不起作用
- php - 如何从textarea获取多行数据到mysql
- sql - 来自动态列的 SQL 数据透视表