Ánh xạ có ý nghĩa gì trong lập trình?


9

Tôi thường nghe những điều như:

  • Ánh xạ các lớp
  • Ánh xạ các đối tượng từ cơ sở dữ liệu
  • Ánh xạ các đối tượng
  • Ánh xạ các yếu tố của một danh sách
  • Một người vẽ bản đồ

Một người lập bản đồ và hành động lập bản đồ gì đó thực sự có ý nghĩa gì?


2
Nó có nghĩa là khớp các mục từ một bộ với các mục trong một bộ khác - hoặc có nghĩa là thực hiện một chức năng trên mỗi mục trong một bộ để có được một bộ tương ứng mới. Đó là loại nói giống nhau về mặt toán học. Vì vậy, nó có thể có nghĩa là khớp các bảng trong cơ sở dữ liệu với các đối tượng trong mã. Hoặc thực hiện một thao tác trên từng mục trong danh sách. Mapper là một hàm hoặc lớp khớp các mục trong một bộ với các mục trong một bộ khác.
JacquesB

Câu trả lời:


12

Việc sử dụng lập trình của động từ "map" và danh từ "mapper" phần lớn không liên quan đến việc sử dụng phổ biến trong tiếng Anh, vì vậy đây là một câu hỏi rất dễ hiểu.

Việc sử dụng lập trình cũng rất rộng, vì vậy hãy bắt đầu với ý nghĩa cụ thể và rõ ràng nhất của "bản đồ". Cụ thể, hàm bậc cao hơn mapcó mặt trong hầu hết các ngôn ngữ lập trình hàm. Đây là một ví dụ tầm thường của nó trong Javascript:

var numbers = [1, 2, 3, 4];
var timesTwo = function(n) {
    return n * 2;
}
numbers.map(timesTwo); // [2, 4, 6, 8]

Các mapchức năng đòi hỏi một mảng và chức năng khác. Nó trả về một mảng mới, là kết quả của việc áp dụng hàm đó cho tất cả các phần tử của mảng ban đầu.

Tất cả các cách sử dụng khác của thuật ngữ có thể, ít nhất là theo kinh nghiệm của tôi, được coi là tương tự với thuật ngữ cụ thể này. Theo nghĩa chung nhất, "lập bản đồ" trong lập trình có nghĩa là lấy một số thứ và sau đó bằng cách nào đó liên kết từng thứ với một thứ khác.

Một cách sử dụng điển hình nhưng không chính xác trong công việc hàng ngày của tôi sẽ là "ánh xạ các sự kiện UI đến các hàm xử lý". Chẳng hạn, khi người dùng nhấp vào nút 1, tôi muốn handleButton1Clickđược gọi và khi người dùng di chuyển qua một hình ảnh, tôi muốn handleImageHoverđược gọi.

Một trong những cách sử dụng cấp cao nhất của thuật ngữ này là ORM (ánh xạ quan hệ đối tượng), có nghĩa là ánh xạ các hàng trong cơ sở dữ liệu quan hệ đến các đối tượng bằng ngôn ngữ OOP, để bạn có thể thao tác các đối tượng "bình thường" trong mã của mình mà không cần phải trực tiếp viết SQL hoặc lo lắng về cấu trúc của cơ sở dữ liệu.


9

Đó là một khái niệm toán học.

www.thefreedadata.com

2. Mathematics The correspondence of elements in one set
to elements in the same set or another set.

Đó là thiết lập sự tương ứng giữa hai mô hình dữ liệu riêng biệt.

  • Ví dụ, bạn có thể nói thay lớp Userlà một đại diện của một hàng của bảng cơ sở dữ liệu USER, đó sẽ là ánh xạ quan hệ đối tượng.
  • Hoặc bạn có thể tạo danh sách cặp khóa-giá trị nói rằng một phần tử đã cho của một danh sách tương ứng với một phần tử của danh sách khác.

Tôi đoán tiếng mẹ đẻ của bạn là tiếng Tây Ban Nha được cung cấp tên người dùng của bạn, ánh xạ hoặc "bản đồ" có thể được dịch là emparejar .


4
Mô tả của bạn chỉ có thể hiểu được đối với người đã có kinh nghiệm về lập bản đồ.
Robert Harvey

@RobertHarvey Tôi loại cải thiện nó.
Tulains Córdova

4

Nói chung, "ánh xạ" là một số liên kết của một số giá trị với các giá trị khác. Nó có xu hướng ngụ ý một loại quy trình thủ công. Nó có xu hướng ngụ ý một hiệp hội cố định. Xem xét các giá trị ASCII:

'a' -> 97
'b' -> 98
'c' -> 99
...

Toàn bộ tập hợp các hiệp hội được gọi là ánh xạ (danh từ). Có các ký tự và số và tạo các liên kết cũng được gọi là ánh xạ (động từ). Nó khác với một hàm, vì một hàm lấy một số đầu vào và tạo đầu ra dựa trên một số tính toán. Các ánh xạ nói chung không thực hiện một phép tính, mà thay vào đó là một kiểu tra cứu.


0

Một bản đồ địa lý chuyển các mốc trên thế giới thực sang một định dạng khác: một mảnh giấy dễ đọc.

Lập bản đồ trong khoa học là cùng một ý tưởng. Bạn lấy một tập hợp các đối tượng từ một miền và dịch chúng sang tên khác để sử dụng khác.

Đó là một khái niệm rộng có thể được sử dụng chung cho bất kỳ số lượng tình huống.

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.