我们先来看两个函数:
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 页
评论区
写评论还没有评论