2011-01-06 7 views
0

나는 대학을 위해서이 코드를 가지고있다. 첫 번째 코드는 예상대로 작동하고 두 번째 코드는 다른 결과를 제공합니다.이 두 가지 Java 코드 조각의 차이점은 무엇입니까?

나는 그들이 다르게하고있는 것을 볼 수 없습니까?

제 :

public Mat3 getNormalMatrix() { 
    return new Mat3(this.getInverseMatrix()).transpose(); 
} 

초 :

public Mat3 getNormalMatrix() { 
    Mat4 mat = this.getInverseMatrix(); 
    Mat3 bla = new Mat3(mat); 
    bla.transpose(); 
    return bla; 
} 
+0

무엇 getInverseMatrix의 선언 된 반환 형식() 싶어? –

+1

다른 결과는 무엇입니까? – jzd

답변

10

첫번째는 전치()의 결과를 상기 제 한 BLA를 리턴. 두 번째 예에서

, 당신은

bla = bla.transpose(); 
+2

이것에 조금을 정교하게. 요점은 Transpose가 호출 된 인스턴스를 수정하는 대신 Mat3의 다른 인스턴스를 반환한다는 것입니다. 나는 짐작할 만하지만 Mat3 클래스는 변경되지 않을 수 있습니다. – rfeak

+0

감사합니다, 전 바보 같은 xD입니다. 나는이 페이지를 인쇄해서 내 화장실에 내놓을 것 같아서 모든 팀에게 상기시켜 주었다. D –

+0

letz는이 녀석에게 답장 배지를 두 번 더 준다. –

관련 문제