"Vô số" nghĩa là gì?


8

Nền tảng của tôi về toán học rất kém (tức là lớp toán có liên quan cuối cùng được thực hiện là trường trung học lượng giác hai năm trước - một câu chuyện khác cho một thời điểm khác). Tôi đang đọc 'Javascript: Hướng dẫn dứt khoát' và đó là một thuật ngữ đang được sử dụng lặp đi lặp lại và tôi đã từng chạy với nó. Nhưng tôi đã đến một chương (Chương 6 - Đối tượng) khi sự thiếu hiểu biết của tôi về thuật ngữ và ứng dụng của nó trong lập trình / OOP đang bắt đầu trở nên bất lợi cho quá trình học tập. Các từ điển trực tuyến không giúp đỡ, vì vậy ai đó có một định nghĩa và / hoặc ví dụ dễ giải thích hơn để hiển thị?


những từ điển nào đã không giúp đỡ? ba người đứng đầu từ google.co.uk/search?q=define+ có thể định nghĩa tất cả đều ổn
jk.

Trong ngữ cảnh của JavaScript, hãy xem "Tính toàn diện và quyền sở hữu tài sản " trên MDN
TehShrike

Câu trả lời:


15

Về mặt toán học, vô số có nghĩa là "có thể được đặt thành một tương ứng một với một số tự nhiên". Hầu hết các biểu diễn trong điện toán là vô số vì chúng được tạo thành từ các chuỗi bit và chuỗi bit có thể được lấy để biểu thị các số trong hệ thống nhị phân.

Một số đại diện dữ liệu không được coi là vô số. Ví dụ, một số dấu phẩy động được tạo ra từ các bit, nhưng chúng tôi làm việc với nó như là một xấp xỉ với một số thực. Ở cấp độ nhị phân, chúng ta có thể "đếm" thông qua các số dấu phẩy động liên tiếp, nhưng thường thì điều này không liên quan trong các ứng dụng số.

Trong một số tình huống khác, việc liệt kê là có thể, nhưng không có thỏa thuận về việc liệt kê. Ví dụ, tất cả các đối tượng trong hình ảnh thời gian chạy của bạn tạo thành một tập hợp hữu hạn và có thể được liệt kê. Người thu gom rác thực hiện điều đó khi nó đi qua các vật thể sống. Nhưng ứng dụng không liệt kê tập hợp tất cả các đối tượng theo cách đó mà không quan tâm đến ranh giới kiểu hoặc mô-đun; nó liệt kê các đối tượng nhỏ hơn cùng loại hoặc có liên quan.

Thông thường khi một bảng liệt kê tồn tại chính thức, có sự thỏa thuận của tất cả các bên. Đây là một tập hợp các giá trị. Đây là lần đầu tiên. Đó là một trong những người kế nhiệm của nó, và như vậy.

Trong một số ngôn ngữ lập trình, tồn tại các kiểu liệt kê: một số cách xác định kỷ luật các hằng số ký hiệu có tên được trình biên dịch ánh xạ tới các giá trị nguyên duy nhất. Nếu các kiểu như vậy được gõ mạnh, thì các hằng số này chỉ có thể được lưu trữ trong các biến của loại tương ứng của chúng, được gọi là kiểu liệt kê . Ví dụ, kiểu liệt kê do người dùng định nghĩa monthchỉ có thể thực hiện các giá trị januarythông qua december. Các giá trị này được giảm xuống các giá trị từ 0 đến 11 và có thể cho phép số học, chẳng hạn như successor(january)sản xuất februaryhoặc khả năng sử dụng phép liệt kê dưới dạng chỉ mục mảng: xác định một mảng days[january..december]trong đó days[january], ví dụ: 31. Mục đích của kiểu liệt kê, do đó, là để phục vụ như một tập hợp con của các số tự nhiên, bởi các tên khác biệt và cung cấp sự rõ ràng về ý nghĩa (tên được sử dụng thay cho hằng số) và kiểm tra kiểu: màu redtừ colorliệt kê không thể được gán cho monthkiểu liệt kê .

Động từ liệt kêcũng được sử dụng để biểu thị khái niệm truy vấn API để truy xuất danh sách các đối tượng, thường theo kiểu từng bước: liệt kê các giao diện mạng, liệt kê các tệp trong một thư mục, v.v. Bất cứ khi nào một đối tượng ở trạng thái tương ứng 1: N với một số đối tượng khác, nó có thể dễ dàng hỗ trợ API liệt kê cho phép chúng tôi đi qua các đối tượng anh chị em đó hoặc truy xuất chúng dưới dạng danh sách. Thuật ngữ này hơi âm u; ví dụ trong một số trường hợp, ngay cả khi các phần tử không theo một thứ tự cụ thể, nhưng tất cả có thể được truy cập mà không lặp lại, thì đó vẫn là bảng liệt kê. Một số cấu trúc dữ liệu tập hợp động như bảng băm không cung cấp một thứ tự cụ thể và có thể tự tổ chức lại khi chúng lớn lên và co lại, để thứ tự thực tế thay đổi khi thực hiện chèn và xóa. Acó thể đến trướcB, nhưng khi chúng tôi chèn C, bây giờ Btình cờ đến trước Avì một số tổ chức lại nội bộ đã diễn ra.


11

Tôi vừa lấy ra bản sao JavaScript của mình : Hướng dẫn dứt khoát , lật sang chương 6 và đọc nhanh phần 6.5 Thuộc tính Enumeratng . Bây giờ, tôi nên nói thêm rằng tôi cũng không phải là một người toán học đặc biệt mạnh mẽ, vì vậy hy vọng điều này có ý nghĩa:

Cụ thể, "liệt kê" có nghĩa là có một số loại lược đồ đặt hàng đang diễn ra, để bạn có thể nhanh chóng / dễ dàng giải quyết các mục trong tập hợp / chuỗi / bộ sưu tập đó (hoặc, trong phần đó của JavaScript: Hướng dẫn xác định , đối tượng) .

Để áp dụng nó vào những gì bạn đang đọc trong cuốn sách, khi tác giả nói rằng các thuộc tính bạn mở rộng một lớp học với được đếm được , ông được chỉ đơn thuần nói, rằng bất cứ tài sản nào bạn thêm vào một đối tượng (không những được thừa kế) có thể được lặp kết thúc. Vì vậy, nếu bạn tạo một đối tượng objnhư vậy:

var obj = {a: 1, b: 2, c: 3};

... khi bạn lặp lại nó với vòng lặp sau (Tôi đang sử dụng tên biến mô tả ở đây):

for (prop in obj) {
    console.log(prop);
}

... bạn sẽ thấy ba mục được ghi vào bảng điều khiển JS của bạn:

  • một
  • b
  • c

Đây là nói cho bạn biết rằng các thuộc tính trong đối tượng obj, được liệt kê bởi các phím a, b, và c.


1
Vì vậy, trong ví dụ đó, a, b, clà vô số thuộc tính? Và thay vào đó, một tài sản không thể đếm được là một tài sản không được liệt kê bởi các khóa?
gr33kbo1

2
Chính xác. Trong trường hợp JavaScript, bất kỳ thuộc tính nào của một đối tượng không được kế thừa từ đối tượng cơ sở đều có thể đếm được . Nếu nó có ích, có thể thử và nghĩ về một tài sản vô số như một tài sản mà người truy cập bạn có thể nhận được, khi lặp qua đối tượng cha mẹ của nó bằng một for-invòng lặp.
nesv

9

Một liệt kê là một đối tượng có thể được liệt kê. "Đã liệt kê" có nghĩa là lần lượt loại bỏ các thành viên của một bộ / bộ sưu tập / danh mục (thường theo thứ tự, thường là theo tên).

Một vô số sau đó là một đối tượng có thể lần lượt đi qua một loạt các đối tượng khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.