我刚刚开始学习Ruby,我需要创建一个模板,用我编写的哈希值替换字符串。我需要在代码中添加什么?
这是我的代码,我为任务编写了两种方法,请帮忙提出您的建议
class Template
def initialize(template_string, local_variables)
@template_string = template_string
@local_variables = local_variables
end
def compile()
@template_string.gsub()
end
end
puts Template.new("I like %{x}", x:"coffee").compile # x = coffee
puts Template.new("x = %{x}", y:5).compile # unknown x
puts Template.new("x = %{x}", x:5, y:3).compile # x = 5, ignores y
答案 0 :(得分:1)
请首先阅读如何使用String#gsub方法。然后像这样重写Template#compile
:
def compile
compiled = @template_string.dup
@local_variables.each do |k, v|
compiled.gsub!("%{#{k}}", String(v))
end
compiled
end
答案 1 :(得分:1)
无需使用gsub
。只需使用String#%
格式规范即可。
def compile
@template_string % @local_variables
end
整个示例:
class Template
def initialize(template_string, local_variables)
@template_string = template_string
@local_variables = local_variables
end
def compile
@template_string % @local_variables
end
end
Template.new("I like %{x}", x: "coffee").compile
#=> "I like coffee"
Template.new("x = %{x}", y: 5).compile
#=> KeyError (key{x} not found)
Template.new("x = %{x}", x: 5, y: 3).compile
#=> "x = 5"