簡體   English   中英

我怎樣才能在scala的每一行中追加內容,為什么它表示單位?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM