我们先来看两个函数:
trait KtStd {
fn let_mut<R>(&mut self, mut block: impl FnMut(&mut Self) -> R) -> R {
block(self)
}
fn let_mut_drop<R>(mut self, mut block: impl FnMut(&mut Self) -> R) -> R where Self: Sized {
block(&mut self)
}
}
impl<T> KtStd for T {}
然后我有如下问题:
- 为什么第一个函数体内部不能写成
block(&mut self)? - 第一个参数写成
&mut self,函数体内部的self类型就变成&mut了,那为什么高阶函数中的参数类型只写Self还是immutable的? - 为什么
self的类型 不能写成mut Self,而必须写成&mut Self? - 如果我要给高阶函数传入
mut self(而不是&mut self) 能做到吗?
1
共 0 条评论, 1 页
评论区
写评论还没有评论