我需要编写一个函数来反转已定义字符串区域中的个案。 "此操作不会更改任何其他状态变量"
答案 0 :(得分:0)
Scala是一种功能语言。它不是纯粹的功能,这意味着它不是严格的功能,而是倾向于那样。
在纯函数式编程中,变量是不可变的。这意味着您无法更改(变异)变量值。
特别是String类型对Java和Scala都是不可变的。
当您对String执行操作时,JVM正在创建一个新操作而不修改原始文件。
请注意,String是由函数
创建的新对象val strOriginal = "abc123"
def invertCase(str: String): String = {
str.map(c => if (c.isUpper) c.toLower else c.toUpper)
}
val strNew = invertCase(strOriginal)
println(s"strOriginal ${strOriginal}")
println(s"newStr ${strNew}")
但是,如果您使用var,它的工作方式相同,但它会在str
引用的位置发生变化
var str = "abc123"
println(s"str ${str}")
def invertCase(str: String): String = {
str.map(c => if (c.isUpper) c.toLower else c.toUpper)
}
str = invertCase(str)
println(s"str ${str}")