scala - Scala 中类型安全的格式化输出

标签 scala printf

我在想是否可以在 Scala 中实现类型安全的 printf 。假设我们只需要支持字符串文字%s%d

我希望编译 printf("This is number %d", 0)printf("This is number %d", "abc")不是。

我希望 printf 检查编译时的参数数量。因此 printf("This is aliteral") 会被编译,但 printf("This is number %d and string %s", 0) 不会。

我已经看到可以用宏来完成。宏对于实现类型安全 printf 是绝对必要的吗?

最佳答案

Scala 的 f 字符串格式化程序已经是类型安全的 printf。它是使用宏来实现的。示例:

scala> val s = "not a number"
s: String = not a number

scala> f"$s%d"
<console>:9: error: type mismatch;
 found   : String
 required: Int
              f"$s%d"
                 ^

关于scala - Scala 中类型安全的格式化输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24470214/

相关文章:

scala - 状态 monad 的 future

java - intellij idea 在 : import org. apache.spark.{SparkContext, SparkConf} 上出现 scala 错误

c - pow(1,0) 返回 0?

尝试使用指针打印值时 c 程序失败

scala - 防止 sbt 发布自动聚合的根项目

scala - Scala 2.13 中缺少导入 scala.collection.parallel

Java SE 内存管理与 Scala 内存管理

c - 为什么这个矩阵点积程序在某些情况下会在最后一列打印地址?

c - %*s 格式说明符是什么意思?

c - 在每第 n 个时间步打印输出