带尖括号 (<>) 的方法

2024-05-05

方法名称中是否可以有尖括号,例如:

class Foo(ind1:Int,ind2:Int){...}
var v = new Foo(1,2)
v(1) = 3 //updates ind1
v<1> = 4 //updates ind2

真实情况显然比这更复杂!!我试图提供一个方便的用户界面。


这个回应并不意味着太严肃——只是证明这几乎可以通过一些黑客手段来实现。

class Vector(values: Int*) {
  val data = values.toArray
  def < (i:Int) = new {
    def `>_=`(x: Int) {
      data(i) = x
    }
    def > {
      println("value at "+ i +" is "+ data(i))
    }
  }
  override def toString = data.mkString("<", ", ", ">")
}

val v = new Vector(1, 2, 3)
println(v) // prints <1, 2, 3>
v<1> = 10
println(v) // prints <1, 10, 3>
v<1> // prints: value at 1 is 10

使用这个类,我们可以有一个使用的向量<>代替()用于“读”和写访问。 如果出现以下情况,编译器 (2.9.0.1) 就会崩溃>返回一个值。这可能是一个错误或滥用的结果>.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带尖括号 (<>) 的方法 的相关文章

随机推荐