2014-04-18 16 views
5

defstruct không được hỗ trợ trong ClojureScript - nó có vẻ như được thiết kế. Bây giờ nó có thể là điều này là một phần không được chấp nhận của ngôn ngữ Clojure, và các nhà thiết kế của ClojureScript chỉ hy vọng mọi người đã tiếp tục. (Nhưng đây là suy đoán của tôi).Lý do đằng sau ClojureScript không cần sự phá hủy của Clojure là gì?

Câu hỏi của tôi là: Lý do đằng sau ClojureScript không cần sự phá hủy của Clojure là gì?

+0

Nó * được * sử dụng hiệu quả trong ngôn ngữ, có lợi cho 'defrecord': [defstruct] (http://clojuredocs.org/clojure_core/clojure.core/defstruct). Chúng ta phải chuyển sang Clojure (JVM). Tôi cho rằng Clojurescript sẽ giống nhau. – Mars

+0

Tuyệt vời - thêm câu trả lời đó với một tham chiếu và tôi sẽ đánh dấu nó là đã trả lời. – hawkeye

Trả lời

5

defstruct không được sử dụng hiệu quả trong ngôn ngữ, có lợi cho defrecord. Chúng ta phải chuyển sang Clojure (JVM), vì vậy tôi cho rằng Clojurescript sẽ giống nhau. Xem phần sau:

Clojure: data structures: "Lưu ý: Hầu hết việc sử dụng StructMaps giờ đây sẽ được phân phối tốt hơn theo hồ sơ".

ClojureDocs: defstruct bình luận bởi steveminer: "Các cấu trúc cũ đã lỗi thời. Hãy sử dụng các bản ghi thay thế. Xem phần ghi lại."

Số điện thoại sắp tới Niềm vui của Clojure, phiên bản thứ 2. (bản phát hành V9) của Fogus và Houser nói "Với sự ra đời của defrecord, nhu cầu về cấu trúc đã gần như bị loại bỏ và do đó các cấu trúc không được đề cập trong cuốn sách này". (p. 322)

Cũng lưu ý rằng Lập trình Clojure, 2nd ed. bởi Halloway và Bedra bao gồm defrecord nhưng không phải defstruct (mặc dù có một số đề cập đến về cấu trúc - có thể vô tình bị bỏ qua lần thứ nhất).

Tôi đoán tất cả những người thú vị đang sử dụng defrecord những ngày này. :-)

Alex Miller's answer để "Tôi nên sử dụng từ khóa không hợp lệ trong clojure ở đâu?" có một cuộc thảo luận tốt đẹp về lợi thế (và bất lợi) của defrecord, mặc dù anh ta không, chủ yếu, so sánh nó với defstruct.

+0

Ngoài ra, trong JS sự khác biệt giữa các đối tượng (như trong trường hợp của một lớp) và hashmaps dạng tự do bị mờ. Ngoại trừ mục đích tối ưu hóa, tôi đoán vậy. – jforberg

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