加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何使这段代码正常运行?

发布时间:2020-12-16 18:26:17 所属栏目:安全 来源:网络整理
导读:我编写了一个简单的脚本,用于将c风格的标识符名称(例如,invoice_number)转换为 java风格的标识符(例如,invoiceNumber). val files = Vector("file1","file2")for (file - files) { val in = io.Source.fromFile(file).mkString var out = "" var i = 0 while
我编写了一个简单的脚本,用于将c风格的标识符名称(例如,invoice_number)转换为 java风格的标识符(例如,invoiceNumber).

val files = Vector("file1","file2")
for (file <- files) {
  val in = io.Source.fromFile(file).mkString
  var out = ""
  var i = 0
  while (i < in.length) {
    val c = in(i)
    if (c == '_') {
      out += in(i + 1).toUpper
      i += 2
    } else {
      out += c
      i += 1
    }
  }
  val writer = new PrintWriter(file + "1")
  writer.write(out)
  writer.flush()
  writer.close()
}

我想知道如何使这个代码功能化.我想不出任何更高阶函数来替换“如果< some-condition> else增加1”逻辑,则将“i增加2”.谢谢.

解决方法

好的,这是我的方法.

val in = "identifier" :: "invoice_number" :: "some_other_stuff" :: Nil
val out = in map(identifier => {
  val words = identifier.split("_")
  val tail = words.tail.map(_.capitalize)
  (words.head /: tail)(_ + _)
})

println(in)
println(out)

认为它是合理的功能风格.有趣的scala大师将如何解决这个问题:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读