def htmlizetext(intext: String) {
for(line <- intext.linesWithSeparators) {
<br>line<br/>
}
}
def htmlizetext(intext: String): String = {
for(line <- intext.linesWithSeparators) {
line + "<br/>"
}
}
上述两项工作都不是
答案 0 :(得分:2)
看看yield
,这可能就是你要找的东西。
def htmlizetext(intext: String) = {
for(line <- intext.linesWithSeparators) yield {
<br>line<br/>
}
}
您可能还想加入返回列表中的所有元素,以返回单个String
而不是此类字符串的列表
您目前没有从您的方法返回任何内容,因为您没有从for
语句中返回任何内容,这是您的语句的最后一种方法。因此,Scala编译器会推断您正在返回Unit
。
答案 1 :(得分:2)
您需要yield
,=
(没有=
方法仍会返回Unit
)和某种形式的连接:
def htmlizetext(intext: String) = {
for (line <- intext.linesWithSeparators) yield {
line + "<br/>
}
}.mkString
或更短的等价物:
def htmlizetext(intext: String) =
intext.linesWithSeparators.map(_ + "<br/>").mkString
答案 2 :(得分:0)
因为没有返回值,除非你使用yield ... 更好的解决方案是按照以下方式“映射”您的收藏:
intext.linesWithSeparators.map(line=> s"$line<br/>").mkString("")
这将以所需的格式转换您的字符串,然后使用mkString连接所有字符串。如果需要,可以指定分隔符而不是空字符串