在定义的区域内反转案例

时间:2018-04-20 02:09:57

标签: scala case

我需要编写一个函数来反转已定义字符串区域中的个案。 "此操作不会更改任何其他状态变量"

1 个答案:

答案 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}")