微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 ruby​​ 中将数组作为单个参数传递?

如何解决如何在 ruby​​ 中将数组作为单个参数传递?

我正在考虑一种更优雅的方法,将数组元素作为单个参数传递给方法

到目前为止,我有以下代码

.black {
background-color: black;
}

.white {
background-color: white;
}

这很好用,我知道 splat 操作符做得很好,但我想看看是否可以不使用那个丑陋的星号,而是可以以某种方式重塑 def fetch_data(keywords) Product.where("name ILIKE ? AND type ILIKE ?",*construct_keywords(keywords)) end def construct_keywords(keywords) keywords.map{ |keyword| "%#{keyword}%" } end 的返回值以便 fetch_data 方法将数组元素识别为单独的参数。所以最终我希望它是这样的:

construct_keywords

提前致谢。

解决方法

虽然这可能很方便,但无法直接告知您的返回值将如何使用并“预先设置”。这是被调用的方法必须实现的东西。

您可能想要探索使用基于关键字的占位符,例如 name ILIKE :name,然后您可以在其中创建匹配的哈希。

现在,您将任意数量的 keywords 传递给返回任意大小的结果数组的方法,然后该方法将绑定到精确到两个位置的查询。这似乎很容易失败。

使用 [ :name,:type ].zip(keywords.map { ... }).to_h 可以为您提供一些可以插入其中的东西,当然,假设您有两个关键字参数。

虽然可能需要一些重构,但一个很难弄乱的表单看起来像这样:

def fetch_data(name:,type:)
  Product.where("name ILIKE :name AND type ILIKE :type",name: name,type: type)
end

必须指定那些关键字参数的地方,并且只能有两个。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。