7
녹의 메서드에 대한 포인터를 만드는 방법이 있습니까? 예를 들어,녹 메서드 포인터
struct Foo;
impl Foo {
fn bar(&self) {}
fn baz(&self) {}
}
let foo = Foo;
let callback = foo.bar; // Does not work
녹의 메서드에 대한 포인터를 만드는 방법이 있습니까? 예를 들어,녹 메서드 포인터
struct Foo;
impl Foo {
fn bar(&self) {}
fn baz(&self) {}
}
let foo = Foo;
let callback = foo.bar; // Does not work
는 UFCS으로 Foo::bar
가 수득 작동하는 (파이썬 유사) fn(&Foo) ->()
; 이미 바인딩은 "자기"변수를 원하는 경우, 그러나
fn foo_bar(x: &Foo) { x.bar() }
let callback = foo_bar;
이 당신이 원하는 경우, 다음 순간에, 당신이 당신의 자신의 래퍼를 작성해야합니다 (즉, callback(&foo)
처럼 호출입니다) (같이 callback()
를 호출하면 foo
객체에 bar
를 호출하는 것과 동일합니다), 당신은 명시 적 폐쇄를
let callback = || foo.bar();
감사를 사용해야합니다. 클로저를 사용하는 것은'self'를 묶는 것도 좋은 생각입니다. – Vortico