5

Tôi đã nhìn thấy thuật ngữ "biến từ vựng" một vài lần, chủ yếu trong ngữ cảnh đóng cửa. Paul Graham sử dụng thuật ngữ trong sách của mình trên Lisp đề cập đến các biến được xác định bằng cách sử dụng biểu thức let.Tại sao đôi khi tôi nghe thuật ngữ "biến lexical?"

Tôi hiểu rằng phạm vi từ vựng là một tên khác cho phạm vi tĩnh. Là biến từ vựng chỉ là một biến có thể nhìn thấy trong môi trường tham chiếu của đơn vị chương trình không?

Tôi hy vọng sử dụng thuật ngữ này để gây ấn tượng với bạn bè và gia đình trong mùa lễ này, ai đó có thể giúp tôi không?

+2

+1 để muốn gây ấn tượng với gia đình bạn bằng các thuật ngữ lập trình. Bạn phải có một gia đình nerdy. :) –

Trả lời

0

Biến từ vựng có thể nhìn thấy trong môi trường tham chiếu của đơn vị chương trình, nhưng không phải tất cả các biến được hiển thị trong môi trường tham chiếu của đơn vị chương trình đều nhất thiết là các biến từ vựng.

Về cơ bản, biến từ vựng là một biến số là cụ thể đến phạm vi được xác định. Trong một ngôn ngữ như Perl, về cơ bản bạn có hai không gian tên được che dấu trên đầu trang của nhau: không gian tên gói động cơ bản và vùng tên từ vựng phủ lên. Vì vậy, $ foo có thể tham chiếu đến một trong hai, tùy thuộc vào việc nó được khai báo một cách từ từ hay không.

+0

Vì vậy, sẽ an toàn khi nói rằng các cụm từ "biến từ vựng" và "biến cục bộ" có thể hoán đổi cho nhau? Với từ vựng được phần nào chính xác hơn? –

+0

Không. Perl có các biến phạm vi cục bộ hóa không phải là từ vựng (chúng được thực hiện trong không gian tên gói), sử dụng từ khóa local(). – chaos

3

Biến lexical là một biến chỉ có thể được tham chiếu (theo tên) trong phạm vi từ vựng của nó. Nói cách khác, phạm vi của biến được xác định bởi văn bản của chương trình, không phải là động lực của việc thực thi chương trình. Biến và giá trị được liên kết với nó có thể có phạm vi (cuộc sống) vượt quá phạm vi từ vựng, ví dụ: nếu nó được ghi lại trong một đóng.

Xem mô tả này của scope and extent.

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