这两个java代码片段之间的区别是什么?

The*_*can 0 java

我有这个代码,我正在为大学做.第一个代码按预期工作,第二个代码提供不同的结果.

我看不出他们在做什么不同?

第一:

public Mat3 getNormalMatrix() {
    return new Mat3(this.getInverseMatrix()).transpose();
}
Run Code Online (Sandbox Code Playgroud)

第二:

public Mat3 getNormalMatrix() {
    Mat4 mat = this.getInverseMatrix();
    Mat3 bla = new Mat3(mat);
    bla.transpose();
    return bla;
}
Run Code Online (Sandbox Code Playgroud)

Zek*_*eki 10

第一个返回transpose()的结果,第二个返回bla.

在第二个例子中,你想要

bla = bla.transpose();
Run Code Online (Sandbox Code Playgroud)

  • 详细说明一下.我相信关键是transpose返回Mat3的不同实例,而不是修改它所调用的实例.我只是猜测,但Mat3类可能是不可变的. (2认同)