【发布时间】:2021-06-02 17:01:49
【问题描述】:
我正在尝试一种更优雅的方式将数组元素作为单独的参数传递给方法。
到目前为止,我有以下代码:
def fetch_data(keywords)
Product.where("name ILIKE ? AND type ILIKE ?", *construct_keywords(keywords))
end
def construct_keywords(keywords)
keywords.map{ |keyword| "%#{keyword}%" }
end
这很好用,而且我知道 splat 运算符做得很好,但我想看看是否可以不使用那个丑陋的星号,而是可以以某种方式重塑 construct_keywords 的返回值,以便fetch_data 方法将数组元素识别为单独的参数。所以最终我希望它是这样的:
def fetch_data(keywords)
Product.where("name ILIKE ? AND type ILIKE ?", construct_keywords(keywords))
end
def construct_keywords(keywords)
keywords.map{ |keyword| "%#{keyword}%" }
# reshape above array in a way so that fetch_data will recognize each elements as arguments
end
提前谢谢你。
【问题讨论】:
标签: arrays ruby refactoring splat