2012-06-01 93 views
1

在Java中,我们可以通过方法扩展当前作用域,以便在this中引用变量(如果它被形式参数隐藏)。一个典型的例子就是我们做的构造函数:斯卡拉方式初始化成员?

class A { 
    int i; 
    A(int i) { this.i = i; } 
} 

现在,有Scala的任何类似的把戏?举例来说,我有一个这样的定义:

class A(i: Int) { 
    val i = i; // ? 
} 

一个平凡的解决办法是重新命名的参数,其他的东西(像在C++使用下划线)中的一个,但我想避免这种情况。

有没有其他办法呢?

在此先感谢!

回答

5

是不是完全一样?然后,只需声明它val(或var):

class A(val i: Int) {} 

这难道不是完全一样?那么你必须使用两个名字。

+0

哇,酷,这是我正在寻找的斯卡拉魔法! :-) – rlegendi

+0

@rlegendi这可能是'case class(i:Int)'**不是**完全相同,因为case类是类的超集,但更短,如果你有多个公有参数 –

+0

@ om-nom-nom Thx,我之前读过关于案例类的内容,但我相信目前我并不需要所有这些功能来解决当前的问题。无论如何,谢谢你提到它! – rlegendi