Scala中的字符串格式

时间:2016-03-29 22:38:23

标签: scala

Scala新手,看到人们在字符串前面使用了标志f,这是我尝试过的一个例子。想知道标志f的功能是什么?是否需要与%s结合使用?试图搜索一些教程但失败了。感谢。

object HelloWorld {

   def main(args: Array[String]) {
      var start = "Monday";
      var end = "Friday";
      var palindrome = "Dot saw I was Tod";
      println(f"date >= $start%s and date <= $end%s" + palindrome);
      // output date >= Monday and date <= FridayDot saw I was Tod
   }
}

2 个答案:

答案 0 :(得分:3)

http://docs.scala-lang.org/overviews/core/string-interpolation.html

  

f插值器

     

将f添加到任何字符串文字允许创建简单   格式化字符串,类似于其他语言的printf。使用时   在f插补器中,所有变量引用都应该跟一个   printf样式的格式字符串,如%d。

PS。另一个有点相关的功能是http://docs.scala-lang.org/overviews/quasiquotes/expression-details

答案 1 :(得分:3)

参见解释here。对于来自C的人来说,f插值器是printf样式格式器。 %表示数据类型,$表示您可以引用先前定义的变量。 %不是强制性的。只是你将得到一个在编译时由编译器决定的格式。您有时可能想要更改输出格式。

所以,如果我举个例子,

var start = "Monday";
  var end = "Friday";
  val age = 33
  var palindrome = "Dot saw I was Tod";
  println(f"date >= $start and date <= $end and age<= $age%f" + palindrome);

我可以省略%f,我会看到33的输出,因为它将推断为Int。但是如果我想将它格式化为浮点数,我可以使用%f。此外,如果您使用不兼容的格式化,您将在编译时收到错误。