我有一个字符串,其中包含一些插值语句,例如description='你好!我是#{self.name}'
。这个字符串存储在数据库中,并没有自动应用字符串插值。
我想在以后应用这个插值。我可以做一些疯狂的事情,比如eval("\"+description+\"")
,但一定有更好、更Ruby式的方法来实现这个功能,对吗?
我有一个字符串,其中包含一些插值语句,例如description='你好!我是#{self.name}'
。这个字符串存储在数据库中,并没有自动应用字符串插值。
我想在以后应用这个插值。我可以做一些疯狂的事情,比如eval("\"+description+\"")
,但一定有更好、更Ruby式的方法来实现这个功能,对吗?
%
运算符:'database store string says: %{param}' % {param: 'noice'}
#=> "database store string says: noice"
class Person
attr_reader :name
def initialize(name)
@name = name
end
def description
'Hello! I am #{self.name}'
end
def interpolated_description
description.split('#').map { |v| v.match(/\{(.*)\}/) ? send($1.split('.').last) : v }.join
end
end
p = Person.new('Bot')
p.interpolated_description
=> "Hello! I am Bot"
这个怎么样?