use std::ops::RangeFull;
trait Trait {
fn method(&self) -> fn();
}
impl Trait for RangeFull {
fn method(&self) -> fn() {
print!("1");
|| print!("3")
}
}
impl<F: FnOnce() -> T, T> Trait for F {
fn method(&self) -> fn() {
print!("2");
|| print!("4")
}
}
fn main() {
(|| .. .method())();
}
..
之前就說過..
,不但可以作為匹配模式,可以作為切片索引,還是RangeFull
對於這類資料,需要明確的是,符號可以替換為物件,但是不能直接作為物件使用。
特殊場景需要進行特殊宣告。
主要問題在於|| .. .method()
該怎麼計算。
劃分方式有兩種
(|| ..) .method()
: 列印24
|| (.. .method)
:列印1
,因為雙重閉包()
不會列印3
可以嘗試一下,|| (.. .method())
會提示錯誤,毫無疑問結果是24
。
但是根據上述的內容,符號和物件轉換需要特殊宣告,我們只要特殊操作一下即可|| ((..).methid())
,此時就會只列印1
。
24
本作品採用《CC 協議》,轉載必須註明作者和本文連結