相关疑难解决方法(0)

Scala的隐藏功能

每个Scala开发人员都应该注意Scala的隐藏功能是什么?

请回答一个隐藏的功能.

scala hidden-features

149
推荐指数
24
解决办法
5万
查看次数

是否可以在Scala中定义构造函数本地变量?

以下代码摘自Martin Odersky等人的Scala编程书.它定义了一个理性类型:

class Rational(n: Int, d: Int) { 
  require(d != 0)
  private val g = gcd(n.abs, d.abs)
  val numer = n / g 
  val denom = d / g
  ...
  private def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)
}
Run Code Online (Sandbox Code Playgroud)

这里值g仅在隐式构造函数初始化字段numer和denom时使用.假设程序员知道它不会在其他任何地方使用.在上面的例子中,它在构造Rational对象后仍然可以访问.这意味着它也将占用空间,因为它是一个私有字段,而不是构造函数的局部变量.

我的问题是如何更改此代码,以便g仅在构造时使用然后丢弃?

constructor scala

10
推荐指数
1
解决办法
410
查看次数

标签 统计

scala ×2

constructor ×1

hidden-features ×1