struct S {
f: fn(),
}
impl S {
fn f(&self) {
print!("1");
}
}
fn main() {
let print2 = || print!("2");
S { f: print2 }.f();
}
方法檢索
T
->Trait
->&T
->&Trait
屬性檢索
T
->*T
混合檢索
想提取屬性或者方法,需要明確的宣告。
如果想要的是方法的話,可以直接宣告呼叫,或者方法賦值。
如果想要的是屬性的話,尤其是Fn
,需要明確的指明是屬性,然後進行呼叫。
這裡存在兩種f
:屬性和方法。
呼叫的形式是S { f: print2 }.f();
,主要判斷的就是提取出來的是什麼。
如果是直接的T.f()
,毫無疑問,一定是方法呼叫。
因為.
分隔了兩部分,也沒有明確需要先獲取f
。
因此列印的是1
。
如果想要先獲取屬性f
,需要進行特殊的說明。
(S { f: print2 }.f)();
1
本作品採用《CC 協議》,轉載必須註明作者和本文連結