2014-11-01 64 views
12

Rust中的任何方式都可以創建本地函數,該函數可以多次調用。我做的是在Python的方法是:Rust中的本地函數

def method1(): 
    def inner_method1(): 
    print("Hello") 

    inner_method1() 
    inner_method1() 

回答

17

是的,你可以定義在函數內部功能:

fn method1() { 
    fn inner_method1() { 
     println!("Hello"); 
    } 

    inner_method1(); 
    inner_method1(); 
} 

然而,內部功能不具備訪問外部範圍。它們只是正常的功能,不能從功能外部訪問。但是,您可以將變量作爲參數傳遞給函數。要使用特定簽名定義一個仍然可以訪問外部範圍變量的函數,您必須使用閉包。

+0

@ChrisMorgan,它與此無關。 – 2014-11-01 10:18:55

+2

@AlexanderSupertramp:當你沒有理由這樣做時,你似乎決心解釋我做出的任何評論。如果你不這樣做,我將不勝感激。在這種情況下,我只是指出可以通過將作爲參數傳遞給函數的變量傳遞給函數來避免使用閉包。沒有什麼不對,是嗎? – 2014-11-01 10:32:32

+0

@ChrisMorgan,哦,來吧 - 我做了一個簡單的聲明,這是完全正確的!我的問題清楚地表明 - 「地方職能」與您的建議無關。 – 2014-11-01 23:49:13