Ruby String#{}不起作用

时间:2017-04-25 07:31:48

标签: ruby string string-interpolation

我有这是我的代码:

tasks.withType(com.android.build.gradle.tasks.ExternalNativeCleanTask) {
    it.actions.clear()

    doLast {
        project.delete("${projectDir}/.externalNativeBuild")
    }
}

我希望结果是class Template def initialize(temp_str) @str = temp_str end def render options={} @str.gsub!(/{{/,'#{options[:').gsub!(/}}/,']}') puts @str end end template = Template.new("{{name}} likes {{animal_type}}") template.render(name: "John", animal_type: "dogs") ,但它是

John likes dogs

为什么#{options[:name]} likes #{options[:animal_type]} 不进行插值?

1 个答案:

答案 0 :(得分:4)

if (data.Things.Count != 0) { var ans = new List<QuestionModel>(); ans = data.Things.Select(item => { return new QuestionModel() { QuestionId = Convert.ToInt32(item.Key), AnswerId = Convert.ToInt32(item.Value), }; }).ToList(); } 不是每当它发生时转换为插值的魔法。这是用于插值的文字语法。在这里你不是字面意思,你可以通过替换得到它。相反,你可以做类似的事情:

#{}

这会捕获胡须中的名称并使用它为哈希编制索引。

更好的方法是利用现有的format functionality。而不是胡须,使用template = "{{name}} likes {{animal_type}}" options = {name: 'John', animal_type: 'dogs'} template.gsub(/{{(.*?)}}/) { options[$1.to_sym] } # => "John likes dogs"

%{}