Các hàm Python trật tự cao hơn (phần 7)

Tạo các bảng nhảy

Case study học phần này chứa một cái xử lí lệnh thúc đẩy bởi menu. Khi người dùng chọn một lệnh từ một menu, chương
trình so sánh lệnh này với mỗi số trong một tập các số cho đến khi một khớp được tìm thấy. Một hàm tương ứng với
số này sau đó được gọi để tiến hành lệnh. Hàm runCommand thực thi quá trình này với một phát biểu chọn nhiều nhánh.
Với nhiều hơn 3 tùy chọn, các phát biểu như vậy trở nên nhàm chán để đọc và khó duy trì. Thêm hay loại bỏ một
tùy chọn cũng trở nên mẹo mực và dễ mắc lỗi.
Một cách thức đơn giản hơn để thiết kế một cái xử lí lệnh là sử dụng một cấu trúc dữ liệu gọi là một bảng nhảy.
Một bảng nhảy là một dictionary các hàm đánh key bởi các tên lệnh. Tại bắt đầu chương trình, các hàm được định nghĩa,
và sau đó bảng nhảy được load với các tên lệnh và các hàm liên quan của chúng. Hàm runCommand sử dụng đối số command
của nó để tìm kiếm hàm trong bảng nhảy và sau đó gọi hàm này. Sau đây là phiên bản điều chỉnh của runCommand:

def runCommand(command): # How simple can it get?

jumpTable[command]()

Chú ý rằng hàm này thực hiện 2 giả định đơn giản hóa quan trọng: command string là một key trong bảng nhảy, và hàm
liên quan của nó không mong đợi đối số.
Hãy giả định rằng các hàm insert, replace, và remove được đánh key thành các lệnh ‘1’, ‘2’, và ‘3’, tương ứng. Sau
đó thiết lập của bảng nhảy là theo đường thẳng:

# The functions named insert, replace, and remove
# are defined earlier
jumpTable = {}
jumpTable[‘1’] = insert
jumpTable[‘2’] = replace
jumpTable[‘3’] = remove

Duy trì cái xử lí lệnh trở nên một vấn đề của quản lí dữ liệu, tại nơi chúng ta thêm hay loại bỏ các lối vào
trong bảng nhảy và menu.

Chia sẻ