是否可以将接收自我的函数作为自身函数的参数传递?

  • 本文关键字:函数 参数传递 自我 是否 rust
  • 更新时间 :
  • 英文 :


我可以将实例的函数作为参数传递给同一实例的函数,还是必须将传递的函数从实例中提取出来?

所以,基本上,做这样的事情:

struct Some_Type {
}
impl Some_Type {
pub fn new() -> Self {
Some_Type{}
}
fn some_fn(&self, value: u32) -> u32 {
value
}
fn some_other_fn(&self, value: u32, input_fn: &dyn Fn(&Self, u32) -> u32) -> u32 {
input_fn(self, value)
}
}
fn main() {
let instance = Some_Type::new();
let fourty_two = instance.some_other_fn(42, &instance.some_fn);
}

还是我必须这样写:

struct Some_Type {
}
impl Some_Type {
pub fn new() -> Self {
Some_Type{}
}
fn some_other_fn(&self, value: u32, fn: &dyn Fn(&Self, u32) -> u32) -> u32 {
fn(value)
}
}
fn some_fn(&Some_Type, value: u32) -> u32 {
value
}
fn main() {
let instance = Some_Type::new();
let fourty_two = instance.some_other_fn(42, &some_fn);
}

我自己找到了解决方案。一个人可以写

fn main() {
let instance = Some_Type::new();
let fourty_two = instance.some_other_fn(42, &Some_Type::some_fn);
}

并在第一个示例中将&self传递给Some_Type.some_other_fn内部的fn

最新更新