lyricsForName
函数不打印任何内容。 shortNameFromName
确实有效,我已经检查了第二个函数有什么问题。
func shortNameFromName(name : String) ->String{
var shortName = ""
let lowercaseNmae = name.lowercased()
let vowelSet = CharacterSet(charactersIn: "aeiou")
if let range = lowercaseNmae.rangeOfCharacter(from: vowelSet, options: String.CompareOptions.caseInsensitive)
{
shortName = name.substring(from: range.lowerBound)
}
return shortName
}
func lyricsForName(lyricsTemplate : String , fullName : String) ->String{
let bananaFanaTemplate = ["<FULL_NAME>, <FULL_NAME>, Bo B<SHORT_NAME",
"Banana Fana Fo F<SHORT_NAME>",
"Me My Mo M<SHORT_NAME>",
"<FULL_NAME>"].joined(separator: "\n")
let shortName = shortNameFromName(name: fullName)
let lyrics = lyricsTemplate
.replacingOccurrences(of: "<FULL_NAME>", with: fullName)
.replacingOccurrences(of: "<SHORT_NAME>", with: shortName)
print(lyricsForName(lyricsTemplate:bananaFanaTemplate , fullName: "vishnu"))
return lyrics
}
第一个功能完美运行,但我猜第二个功能无法正常运行。我应该怎么做才能让它发挥作用?
最佳答案
我现在在办公 table 旁,所以快速浏览了您的代码。这现在有效(注意 bananaFanaTemplate 中的拼写错误):
func shortNameFromName(name : String) ->String{
var shortName = ""
let lowercaseNmae = name.lowercased()
let vowelSet = CharacterSet(charactersIn: "aeiou")
if let range = lowercaseNmae.rangeOfCharacter(from: vowelSet, options: String.CompareOptions.caseInsensitive) {
shortName = name.substring(from: range.lowerBound)
}
return shortName
}
func lyricsForName(lyricsTemplate : String , fullName : String) -> String {
let shortName = shortNameFromName(name: fullName)
let lyrics = lyricsTemplate
.replacingOccurrences(of: "<FULL_NAME>", with: fullName)
.replacingOccurrences(of: "<SHORT_NAME>", with: shortName)
print(lyrics)
return lyrics
}
let bananaFanaTemplate : String = ["<FULL_NAME>, <FULL_NAME>, Bo B<SHORT_NAME>",
"Banana Fana Fo F<SHORT_NAME>",
"Me My Mo M<SHORT_NAME>",
"<FULL_NAME>"].joined(separator: "\n")
print(lyricsForName(lyricsTemplate:bananaFanaTemplate , fullName: "vishnu"))
输出:
毗湿奴,毗湿奴,博比什努 香蕉法纳佛 Fishnu 我我的莫米什努 毗湿奴
我认为您对函数作用域问题很困惑。您在函数的实现中声明了常量 bananaFanaTemplate,该参数应该已传递给函数。同样,您从函数体内调用函数,通常不会这样做,除非它应该是递归函数。
希望对您有所帮助。
关于swift - lyricsForName 函数不打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46225015/