我试图弄清楚Scala编程语言是否有一种别名方法(对于相同的内存位置存在两个或多个不同的引用方法)。
我可以看到类型别名的例子,例如" x:(Int,String)=(1,one)"。所以x有两种不同的类型,但是它们共享相同的内存吗?
如果有人能给出更多解释,我将不胜感激。
答案 0 :(得分:1)
如果你想要一个"变量"跟踪另一个,你可以做这样的事情。
string
这不是真正的别名。您无法修改@IBOutlet var firstButton: UIButton!
@IBOutlet var secondButton: UIButton!
@IBAction func didTouchUpInsideSwapButton() {
let firstButtonText = firstButton.titleLabel?.text
firstButton.setTitle(secondButton.titleLabel?.text, for: .normal)
secondButton.setTitle(firstButtonText, for: .normal)
}
并查看scala> var x = 5 // create a variable
x: Int = 5
scala> def y = x // keep track of x
y: Int
scala> x = 9 // change x
x: Int = 9
scala> y // yep, y changes too
res1: Int = 9
中的更改。每次调用y
时都会对其进行重新评估,因此每次查询x
时,都会重新检查def
当前值。
请注意,这种类型的东西不被认为是斯卡拉的好习惯。在功能编程中,你想要避免维护状态的数据结构,即如果你不需要,就不要使用y
,而且好的Scala程序员几乎从不需要。