Tôi đang sử dụng ngược chiều kim đồng hồ để chạy REPL, nhưng tôi cũng nhận thấy điều này trên Leiningen.Tại sao có thể xác định lại Var (cho rằng trong các giá trị FP là không thay đổi)?
Tôi có thể gọi def để xác định var hai lần. Ví dụ:
=> (def a 1)
#'fractal.core/a
=> a
1
=> (def a 2)
#'fractal.core/a
=> a
2
Clojure là ngôn ngữ lập trình chức năng và đối tượng FP được cho là không thay đổi. Nếu tôi có thể làm điều này theo nghĩa nào là không thay đổi?
Cảm ơn mọi nhận xét.
Nói đúng ra nó không thay đổi giá trị của Var, nó được gọi là * rebinding * (nghĩ * shadowing * trong các ngôn ngữ bắt buộc). –
@ om-nom-nom Điều này không có gì giống như đổ bóng. Bạn có thể gọi nó là rebinding nếu bạn thích, nhưng không có sự khác biệt cụ thể nào giữa điều này và thay đổi giá trị của var; vâng, var vẫn có cùng "giá trị" ở chỗ nó vẫn giữ cùng một ô có thể thay đổi được, nhưng nội dung của ô đó đã thay đổi và đó là điều thường có nghĩa là thay đổi giá trị của một vật. – amalloy