![](/img/trans.png)
[英]How to split a line of text and append that line to each element in Scala/Spark
[英]how can i append to each line in scala and why is it saying unit?
我在做一些愚蠢的嘗試來發送HTML電子郵件,但並沒有真正理解我在做什么,但是我想向函數發送多行字符串,並返回相同的字符串,並在每行后面附加一些內容-我在做什么錯?
def htmlizetext(intext: String) {
for(line <- intext.linesWithSeparators) {
<br>line<br/>
}
}
def htmlizetext(intext: String): String = {
for(line <- intext.linesWithSeparators) {
line + "<br/>"
}
}
以上都不是
看一看yield
,這可能就是您想要的。
def htmlizetext(intext: String) = {
for(line <- intext.linesWithSeparators) yield {
<br>line<br/>
}
}
您可能還希望合並返回列表中的所有元素,以返回單個String
而不是此類字符串的列表
您目前沒有從方法中返回任何東西,因為您沒有從for
語句中返回任何東西,這是您語句的最后一個方法。 因此,Scala編譯器推斷您正在返回Unit
。
您需要yield
, =
(沒有=
方法仍將返回Unit
)和某種形式的串聯:
def htmlizetext(intext: String) = {
for (line <- intext.linesWithSeparators) yield {
line + "<br/>
}
}.mkString
或更短的等效項:
def htmlizetext(intext: String) =
intext.linesWithSeparators.map(_ + "<br/>").mkString
因為for沒有返回值,除非您使用yield ...更好的解決方案是如下“映射”您的集合:
intext.linesWithSeparators.map(line=> s"$line<br/>").mkString("")
這樣會將您的字符串轉換為所需的格式,然后使用mkString將所有字符串連接在一起。 如果需要,可以指定一個分隔符而不是空字符串
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.