首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scala:访问隐藏参数/变量

Scala:访问隐藏参数/变量
EN

Stack Overflow用户
提问于 2015-06-26 09:56:38
回答 1查看 417关注 0票数 1

我有以下代码,并且在

  1. if在方法hideVariableFromOuterBlock中,我声明了一个变量k,它隐藏在外部块中定义的变量。
  2. 在第二个方法hideParameterName中,我声明了一个变量k,它用相同的名称隐藏参数。
代码语言:javascript
运行
复制
object Test extends App {
  def hideVariableFromOuterBlock() = {
    var k = 2457
    if (k % 2 != 0) {
      var k = 47
      println(k) // this prints 47
      //println(outer k)
    }
    println(k) // - this prints 2457 as expected
  }

  def hideParameterName(k: Int) = {
    var k = 47
    println(k) // this prints 47
    //println(parameter k)
  }

  hideVariableFromOuterBlock()
  hideParameterName(2457)
}

在我对变量或参数k进行隐藏的块中是否有任何方法来访问阴影值(来自外部块的变量)?

我知道这不是一个好做法,我永远不会这样做。我提出这个问题是为了教育目的。

我做了一些研究,但没有找到明确的解释。我可以清楚地发现/看到隐藏发生了,但没有发现来自外部块的变量不能再被访问的明确解释。

我是斯卡拉的新手。

EN

回答 1

Stack Overflow用户

发布于 2015-06-26 10:04:13

This的答案首先讨论了为什么允许隐藏。

至于一种访问隐藏值的方法,据我所知,最简单的方法就是重命名内部变量,然后问题就解决了。我想,为了练习,如果您真的不想重命名任何东西,您可以将外部变量赋值给一个具有不同名称的新变量。

代码语言:javascript
运行
复制
var k = 2457
val outer_k = k
if (k % 2 != 0) {
  var k = 47
  println(k) // this prints 47
  println(outer_k)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31070212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档