2014-11-01 19 views
12

Trong bất kỳ cách nào trong Rust để tạo ra một hàm cục bộ có thể được gọi là nhiều hơn một lần. Con đường tôi muốn làm điều đó trong Python là:Chức năng cục bộ trong Rust

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

    inner_method1() 
    inner_method1() 

Trả lời

17

Vâng, bạn có thể xác định các chức năng bên trong các chức năng:

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

    inner_method1(); 
    inner_method1(); 
} 

Tuy nhiên, chức năng bên trong không có quyền truy cập vào phạm vi bên ngoài. Chúng chỉ là các hàm bình thường mà không thể truy cập từ bên ngoài hàm. Tuy nhiên, bạn có thể chuyển các biến cho hàm làm đối số. Để xác định một hàm với một chữ ký cụ thể mà vẫn có thể truy cập các biến từ phạm vi bên ngoài, bạn phải sử dụng các bao đóng.

+0

@ChrisMorgan, nó không liên quan gì đến điều đó. –

+2

@AlexanderSupertramp: bạn dường như đã giải thích mọi nhận xét tôi tạo ra tiêu cực khi không bao giờ có lý do để làm như vậy. Tôi sẽ đánh giá cao nếu bạn ngừng làm điều đó. Trong trường hợp này tôi chỉ đơn thuần chỉ ra rằng bạn có thể tránh việc sử dụng các bao đóng bằng cách truyền các biến sẽ được đóng lại vào một hàm làm đối số. Không có gì sai với điều đó, phải không? –

+0

@ChrisMorgan, Oh, thôi nào — Tôi đã đưa ra một tuyên bố đơn giản hoàn toàn đúng! Câu hỏi của tôi nói rõ ràng - "chức năng địa phương" mà không có gì để làm với những gì bạn đã đề xuất. –

Các vấn đề liên quan