Swift 字符串内插中是否可以使用字符串/字符字面量?

12

在 Swift 中,能否在字符串插值中使用字符串/字符字面量?

语言参考文档中提到:

你在插值字符串的括号内编写的表达式不能包含未转义的双引号(")…

这对我来说有点模糊,因为它似乎故意留下了转义双引号的漏洞。

如果我尝试:

println( "Output: \(repeat("H",20))" );

func repeat( char:Character, times:Int ) -> String {
    var output:String = "";
    for index in 1...times {
        output += char;
    }
    return output;
}

我收到了"Expected ',' separator"错误提示。

同样地,如果我做同样的事情,但是转义引号,仍然不行:

println( "Output: \(repeat(\"H\",20))" );

我怀疑这是不可能的,并且说实话,这没什么大不了的-我还没有发现任何一个例子不能通过在字符串插值之前做一点工作轻松解决,我想我只是在寻找确认它是不可能的。


println("输出:" + repeat("H", 20) + "");,也许?最后的 "" 不需要添加。 - holex
确认 @holex 的解决方案很好用。 - Chris Wagner
当然,那完全可行 -- 但它不是字符串插值,只是字符串连接。 - Geoffrey Wiseman
1
很遗憾,我没有解决你的问题,但是当你在循环中使用for in时 -> 如果你不使用index,只需使用for _ in 1...times - borchero
让 value = repeat("H",20) println( "输出: (value)"); @Narendra G - Narendra G
2个回答

3

0

我希望它是:

let strfunc = repeat("H",20) as string
println( "Output: \(strfunc)" );

1
是的,再次强调,这是一个我没有的问题的完美解决方案。;) 有很多方法可以将重复的字符插入到带或不带插值的字符串中。我真正想要验证的是,在Swift字符串插值表达式中没有使用字符串字面量的方法。似乎确实如此。 - Geoffrey Wiseman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接