我将首先说这绝不是一个主要问题,更多的是我在编程语言设计方面没有真正听说过的事情,我想知道是否有人有任何有趣的解决方案。
问题的症结在于此。有时在面向对象的语言中,我希望能够通过其中一种方法修改对象,但返回对象本身而不是该方法返回的内容。
举一个java例子:
class MyClass{
public MyClass(List<Integer> list){
//do constructor stuff
}
public MyClass(Integer i){
//what I would like to be able to do
this((new LinkedList<Integer>).add(i));
}
}
我无法在第二个构造函数中创建临时列表,因为 this() 必须是第一行。显然有很多方法可以通过改变实现来做到这一点,比如创建一个返回对象的 add() 方法,使其成为构造对象的函数的责任以生成列表等。
但是,考虑到很多时候您不能/不想修改或创建子类(对于 LinkedList),并且您可能不想混淆调用代码,能够修改并返回样式中的对象的 ++x 可能真的很有用。类似于
this(#(new LinkedList).add(i)
表示您要反对的东西,而不是方法返回。有谁知道允许这是一些简洁的句法方式的语言?如果没有,这会有用吗,还是我在这里遗漏了一些基本的东西?