"+ ="와 같은 복합 연산자를 사용자 정의 유형과 함께 어떻게 사용할 수 있습니까?+ = "plus equals"연산자를 어떻게 오버로드 할 수 있습니까?
Add
, Sub
, etc을 구현하면 일부 기본 연산자를 오버로드 할 수 있습니다. 그러나 +=
에 대한 지원은 나타나지 않으며 x += y
은 자동으로 x = x + y
(1.0 알파 릴리스 기준)으로 해석되지 않습니다.
"+ ="와 같은 복합 연산자를 사용자 정의 유형과 함께 어떻게 사용할 수 있습니까?+ = "plus equals"연산자를 어떻게 오버로드 할 수 있습니까?
Add
, Sub
, etc을 구현하면 일부 기본 연산자를 오버로드 할 수 있습니다. 그러나 +=
에 대한 지원은 나타나지 않으며 x += y
은 자동으로 x = x + y
(1.0 알파 릴리스 기준)으로 해석되지 않습니다.
AddAssign
(SubAssign
, MulAssign
... 등)으로 지원됩니다.
이 기본적인 예입니다
use std::ops::{Add, AddAssign};
struct Float2(f64, f64);
impl AddAssign for Float2 {
fn add_assign(&mut self, rhs: Float2) {
self.0 += rhs.0;
self.1 += rhs.1;
}
}
지금은 할 수 없지만 확실히 원하는 것은 분명합니다. 에 의해 덮여 RFC issue #393.
매우 오래전에 x += y
은 x = x + y
으로 구현되었지만 항상 버그가있었습니다. 나는 그 당시 접근 방식에 근본적인 문제가 있다고 생각하지 않지만, 이제는 가치에 의한 논점을 취하는 운영자의 특성으로의 전환이 그 일을 잘 수행하기가 더 힘들다고 생각한다.
이 답변은 당시 정확하지만, 이후 구현되었습니다. 자신의 대답을 추가했습니다. – ideasman42