gpt4 book ai didi

ruby - Ruby 中基于特定文本的存在触发方法的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:13 26 4
gpt4 key购买 nike

我不知道它是否可以称为算法,但我认为它很接近。我将从标题中包含某些词的 API 中提取数据,例如:

  1. Great Software 2.0 立即下载
  2. 只需 10 美元即可购买出色的软件
  3. 优秀的软件 Torrent 下载

所以,我想根据某些词的存在做不同的事情,例如下载、购买等。例如,如果其中有“购买”这个词,我想提取“购买”这个词和数量标题中存在的值并将其显示在另一个 div 中,因此在这种情况下它将是“10 美元购买”或“10 美元购买”等。我也可以做 if/else 但我不想使用 if否则,因为将来可能会有更多这样的条件。所以我在想的是使用发送方法。例如:

def buy(string)
'Buy for just' + string.scan(/\$\d+/).first
end

def whichkeyword(title)
send (title.scan(/(download|buy)/i)[0][0]).downcase.to_sym, title
end

whichkeyword('Buy this software for $10 now')

有更好的方法吗?或者这甚至是一个好方法吗?任何帮助将不胜感激

最佳答案

首先,当且仅当您要调用private 方法时,使用send,否则使用public_send

在这种特殊情况下,元编程有点矫枉过正。它需要太多冗余代码,而且需要为新项目更改代码。我会去构建一个散列,如:

@hash = { 'buy' => { text: 'Buy for just %{placeholder}', re: /\$\d+/ } }

此散列可能位于代码 之外的某处,例如。 G。它可能存储在代码附近的 yml 文件中并提前加载。这样您就可以在不修改代码的情况下更改行为,这在 gem 中非常方便。

因为我们定义/加载了一个散列,我将调用该方法:

def format string
key = string[/#{Regexp.union(@hash.keys).source}/i].downcase
puts @hash[key][:text] % { placeholder: string[@hash[key][:re]] }
end

产量:

▶ format("Buy this software for $10 now")
#⇒ Buy for just $10

与声明方法相比有很多优点,例如。 G。现在匹配可能包含空格,您可以轻松添加/删除匹配器等。

关于ruby - Ruby 中基于特定文本的存在触发方法的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167257/

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