今、私はテキストの文字列で一致を見つけています:
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(:+)
end
def minus
self.meta_reduce(:-)
end
def times
self.make_float
self.meta_reduce(:*)
end
def divide
self.make_float
self.meta_reduce(:/)
end
def make_float args = nil
return args.to_f if args
@value = @value.map {|n| n.to_f }
end
def meta_reduce operation = :sym
if @value.length < 2
raise 'calculator is empty'
end
@value = self.push(@value.pop(2).reduce(operation))
end
私の数学の例では、メソッドの違いは適用される操作であり、他の例では、違いは一致するものであることを知っています。部分文字列を供給するだけで、その場で新しいメソッドを作成するエレガントな方法はありますか?