2010-02-13 37 views
19

Trong PHP và một số ngôn ngữ kịch bản khác có cú pháp $var trong khi Java và các ngôn ngữ khác, chúng tôi có thể thực hiện chỉ var.

Có lý thuyết nào đằng sau nó không? Nó có giúp họ phân tích cú pháp không. Nếu không phải lý do tại sao họ sẽ chọn để tack thêm một nhân vật ở phía trước?

+25

Tại sao chim ... đột nhiên xuất hiện? – cletus

+4

mỗi lần ... bạn đang ở gần –

+1

Một số ngôn ngữ sử dụng thụt lề một số khung ... đó là lý do tại sao tất cả ngôn ngữ có sự khác biệt cú pháp ... tương tự cho $ trước biến trong PHP –

Trả lời

67

Nó ngăn các tên biến xung đột với từ khóa ngôn ngữ và cho phép chúng được nội suy theo chuỗi.

+5

đây là một câu trả lời ngắn gọn mà thực sự không giúp được gì nhiều ... một số ví dụ hoặc chi tiết sẽ giúp – HorusKol

+37

và chưa ... nó phù hợp hoàn hảo với câu hỏi – Jacco

+2

+ dễ dàng hơn nhiều để phát hiện và làm việc với biến theo cách này. – dusoft

9

Lý thuyết của tôi là các ngôn ngữ kịch bản như php sẽ cần một số cách để tiếp tục chạy ngay cả khi một từ dành riêng mới được giới thiệu, chẳng hạn như php4 -> php5 được thêm vào. Vì ngôn ngữ kịch bản của nó, bất kỳ trang web nào đã bắt được dưới dạng tên biến sẽ không chết, do thay đổi ngôn ngữ.

Đây không phải là một vấn đề với các ngôn ngữ biên soạn từ tất cả mọi thứ được chuyển thành một nhị phân và bất kỳ thay đổi trong ngôn ngữ sẽ không ảnh hưởng đến đã biên soạn chương trình

+2

Các ngôn ngữ được diễn giải như Python thực hiện mà không cần bất kỳ tiền tố biến nào. Các thay đổi đột phá tương thích ngược được giữ cho đến phiên bản chính tiếp theo của ngôn ngữ. – badp

+2

Perl có sigils ** và ** được biên dịch. Chắc chắn nó là byte-code, nhưng sau đó một lần nữa như vậy là 'C#'. Bạn thực sự nên thay đổi * biên dịch * thành * tĩnh *, vì nó chính xác hơn. –

8

hằngtừ dành riêng đến mà không có sự $ điều

Đừng cố gắng so sánh các cú pháp ngôn ngữ lập trình ... Chúng đang ở trong quá khác biệt. :)

6

Vì một số ngôn ngữ là các tập lệnh quảng cáo đặc biệt xấu và sử dụng các thủ thuật ngốc nghếch để cảnh báo "trình phân tích cú pháp" cho thực tế là nó có tác dụng.

Và các ngôn ngữ khác đã nỗ lực thiết kế ngôn ngữ thực sự mà sử dụng tên biến thực và cú pháp vĩ mô không xấu xí ...

Một ngôn ngữ khá phong nha sử dụng $ là Perl, nhưng tôi có thể chỉ ra rằng Perl6 đánh rơi nó.

+3

Các thủ thuật ngốc nghếch có lẽ là chính đáng trong những năm 1970 khi điều quan trọng hơn là làm cho mã dễ dàng trên trình biên dịch hơn là dễ đọc cho con người. – Dan

+1

Thật không may Perl6 đã không thả sigils [1] ($, @,%). [1] http://en.wikipedia.org/wiki/Perl_6#Sigil_invariance – nimrodm

+4

** May mắn thay ** Perl 6 không thả sigils, nếu không nó sẽ không còn là Perl nữa. –

8

Bởi vì rễ của nó nằm trong Perl: PHP History

+2

Đối với người bỏ phiếu xuống: Bạn có muốn cho vay một lưu ý ngắn về lý do không? –

+1

Và rễ của Perl nằm trong shell scripting. – mob

1

Dưới đây là một proposed explanation as to why PHP uses $. Nó cho thấy chuỗi các tập lệnh gốc như awk sử dụng $ thông qua Perl tới PHP.

Có thể ban đầu được sử dụng để phân tích ngôn ngữ dễ dàng hơn rất nhiều.

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