组合两个非常相似的ruby if语句
现在,我正在一个文本字符串中查找匹配项:组合两个非常相似的ruby if语句,ruby,regex,string,methods,match,Ruby,Regex,String,Methods,Match,现在,我正在一个文本字符串中查找匹配项: if w.include? 'syn' w.sub!(/.*?syn\|/, '') return w unless similar?(word, w) elsif w.include? 'sim' w.sub!(/.*?sim\|/, '') return w unless similar?(word, w) end 但我希望能够将它们结合起来,就像我在另一个小程序中所做的那样(这只是其中的一个片段): def plu
if w.include? 'syn'
w.sub!(/.*?syn\|/, '')
return w unless similar?(word, w)
elsif w.include? 'sim'
w.sub!(/.*?sim\|/, '')
return w unless similar?(word, w)
end
但我希望能够将它们结合起来,就像我在另一个小程序中所做的那样(这只是其中的一个片段):
def plus
self.meta_reduce(:+)
结束
减def
self.meta_reduce(:-)
结束
def时间
自浮
self.meta_reduce(:*)
结束
def分配
自浮
self.meta_reduce(:/)
结束
def使_浮动参数=零
如果参数为,则将参数返回到\u f
@value=@value.map{| n | n.to_f}
结束
def meta_reduce操作=:sym
如果@value.length<2
提高“计算器为空”
结束
@value=self.push(@value.pop(2.reduce)(操作))
结束
我知道在我的数学例子中,方法的不同在于所应用的运算,而在另一个例子中,不同在于所匹配的运算。有没有一种优雅的方法可以通过输入子字符串来动态创建新方法?这个怎么样
%w[syn sim].each do |str|
if w.include? str
w.sub!(/.*?#{str}\|/, '')
return w unless similar?(word, w)
end
end
如果您意识到
string.sub!(/xxx/,“”)
将不执行任何操作,如果string
不包含xxx
,则返回nil
。这样你就可以写作了
if w.sub!(/.*?syn\|/, '') or w.sub!(/.*?sim\|/, '')
return w unless similar?(word, w)
end
你到底是什么意思?我不明白你想做什么。我想当他说联合时,他真的是指重构是的,我指的是重构。
if w.sub!(/.*?syn\|/, '') or w.sub!(/.*?sim\|/, '')
return w unless similar?(word, w)
end