2010-10-14 10 views

Trả lời

42

Về cơ bản đó là quy ước đặt tên bắt nguồn từ LISP. Lý do đằng sau nó là:

  1. X là tên giữ chỗ chung.
  2. XS được phát âm là X'es, nghĩa là "nhiều X".
+4

Quy ước này thực sự được mở rộng đến cấu trúc đa chiều. Ví dụ, xss có thể là một danh sách các danh sách, và xsss có thể là một mảng các mảng của mảng. – Adrian

+0

Và tại sao không sử dụng tên phù hợp và có ý nghĩa? – shinzou

29
+1

Tôi nghĩ đó là xii;) –

+3

@Paul - no, chỉ hoạt động khi bạn có chính xác 12 xs –

8

Tôi đã nhìn thấy tên này được sử dụng cho các biến danh sách trong hướng dẫn lập trình chức năng, nhưng không dây (trừ trường hợp một chuỗi được coi là một danh sách các nhân vật).

Về cơ bản, đây là tên giả được sử dụng trong các ví dụ. Bạn có thể đặt tên biến vô hướng x trong khi danh sách sẽ là xs, vì xs là số nhiều của x. Trong mã sản xuất, tốt hơn là nên có một tên mô tả hơn.

Bạn cũng có thể thấy điều này trong mã có mẫu khớp với danh sách. Ví dụ (trong OCaml):

let rec len l = 
    match l with 
    | [] -> 0 
    | x :: xs -> 1 + len xs 

Một cặp mô tả nhiều hơn các tên có thể là first :: rest, nhưng đây chỉ là một ví dụ.

+0

Tôi có xu hướng sử dụng cùng một quy ước trong sản xuất, ví dụ như "thứ tự" và "đơn hàng";) – bbozo

14

Ngoài thực tế là xs được hiểu là một số nhiều của x như @Ken Bloom điểm ra, nó cũng có liên quan cần lưu ý cách ngôn ngữ như Scala cấu trúc List. List được cấu trúc dưới dạng danh sách được liên kết, trong đó vùng chứa có tham chiếu đến mục đầu tiên và phần còn lại của danh sách.

alt text

Các :: điều hành (gọi tắt là cons) xây dựng các danh sách như:

42 :: 69 :: 613 :: Nil 

Các :: khi xuất hiện trong mô hình kết hợp cũng trích ra một danh sách vào mục đầu tiên và phần còn lại của danh sách như sau:

List(42, 69, 613) match { 
    case x :: xs => x 
    case Nil => 0 
} 

Vì mẫu này xuất hiện ở mọi nơi, lại người quảng cáo có thể phỏng đoán rằng xs ngụ ý "phần còn lại của danh sách".

+7

Tôi phát âm tinh thần "xs" là "dư thừa", như trong phần "phần còn lại". – nibot