【问题标题】:Can a Scala for loop modify variables outside its scope?Scala for 循环可以修改其范围之外的变量吗?
【发布时间】:2011-08-17 02:30:04
【问题描述】:

例如假设我有以下内容

  var lastSecurity = ""

  def allSecurities = for {
    security <- lastTrade.keySet.toList
    lastSecurity = security
  } yield security

目前

lastSecurity = security

似乎是在作用域内创建一个新变量,而不是修改第一行代码中声明的变量。

【问题讨论】:

    标签: scala


    【解决方案1】:

    试试这个:

    var lastSecurity = ""
    
    def allSecurities = for {
      security <- lastTrade.keySet.toList
    } yield {
      lastSecurity = security
      security
    }
    

    【讨论】:

      【解决方案2】:

      就像

      var a = 1
      {
        var a = 2
        println(a)
      }
      println(a)
      

      打印出来的

      2
      1
      

      不管是vars 还是vals。在 Scala 中,您可以从外部范围隐藏变量,但是当您不得不使用 val 关键字(即用于理解、匿名函数和模式匹配)时,这可能会导致一些混乱。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-05
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 2018-09-21
        • 1970-01-01
        • 2011-05-27
        • 2011-11-12
        相关资源
        最近更新 更多