我有以下代码:
public class MyClass
{
....
}
public static MyClass MyClassModifier(MyClass myinstance)
{
......
return myinstance;
}
在我看来,返回myinstance实际上并没有在这里做任何事情,换句话说,这与上面的代码完全相同(只要myinstance没有分配给方法中的另一个对象):
public static void MyClassModifier(MyClass myinstance)
{
......
}
我当然可以这样做:
public static MyClass MyClassModifier(MyClass myinstance)
{
......
return new MyClass();
}
但这看起来很笨重,如果MyClass的构造函数有很多参数,那么这就变得非常笨重了,那么问题是,哪一个更好,为什么?
从功能编程的角度来看,最后一个似乎是要走的路,但我不确定这是最好的方法。
答案 0 :(得分:2)
是修改输入参数并将其返回错误的方法吗?
是。它们具有误导性 - 客户端会假设您的方法读取输入参数,创建一个新对象并返回它。事实上,这不是正在发生的事情。返回值是输入值,客户端无需捕获它。
关于你的第二个问题,无论你是应该改变输入值还是创建新的输入值,答案在很大程度上取决于你想要实现的目标。没有任何背景,不可能给你一个更好的答案。
从功能编程的角度来看,最后一个似乎是要走的路,但我不确定这是最好的方法。
是的,在函数式编程中,您需要不可变状态 - 这意味着MyClass
无法修改,因此您必须返回它的新实例。