pab*_*blo 4 functional-programming scala
我编写了一个简单的脚本,用于将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()
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何使这个代码功能化.我想不出任何更高阶函数来替换"如果<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)
Run Code Online (Sandbox Code Playgroud)
认为它是合理的功能风格.有趣的scala大师将如何解决这个问题:)