2011-09-16 32 views
12

Tôi đang phải vật lộn với việc tìm kiếm bất kỳ ví dụ tốt về coffeescript và mô hình phù hợp với nhau từ những loại ví dụ:Pattern Matching trong coffeescript

{x, y} = sprite 
css = {opacity, fontFamily} 

Tôi đã sử dụng mô hình kết hợp trong Erlang nhưng tôi phải vật lộn với việc tìm kiếm một số tiên tiến hơn ví dụ trong coffeescript minh họa chính xác những gì có thể.

Trả lời

19

Ah, tôi nghĩ tôi đã nhận ra những ví dụ: http://pragprog.com/magazines/2011-05/a-coffeescript-intervention :)

CoffeeScript của mô hình khớp (hơn chính thức được gọi là "destructuring chuyển nhượng" để phân biệt với mô hình khớp trong Erland và Scala, mà là khá khác nhau) có thể được sử dụng để trích xuất thông tin từ rất cấu trúc dữ liệu phức tạp. Dưới đây là một ví dụ từ official docs:

{poet: {name, address: [street, city]}} = futurists 

mà chủ yếu là tương đương với

poet = futurists.poet 
name = poet.name 
street = poet.address[0] 
city = poet.address[1] 

Trên thực tế, mặc dù, destructuring chuyển nhượng được sử dụng chủ yếu cho grabbing một hoặc hai thuộc tính đối tượng, như trong ví dụ bạn đề cập đến hoặc để nhận các bộ phận từ một mảng. Ví dụ, bạn có thể trao đổi các giá trị của hai biến ab bằng cách viết

[a, b] = [b, a] 

và sử dụng các sọc, bạn có thể lấy giá trị đầu tiên và cuối cùng của một mảng arr bằng cách viết

[first, middle..., last] = arr 

tôi hy vọng rằng sẽ giúp. Có nhiều ví dụ hơn trong sách của tôi, CoffeeScript: Accelerated JavaScript Development.

2

Có một thư viện cung cấp cách viết các cấu trúc giống Erlang ngay trong coffeescript mà không cần biên dịch trước, chỉ cần quấn nó lên trong chức năng đặc biệt. Bạn có thể tìm thấy ở đây: https://github.com/nogizhopaboroda/f_context.