Tôi đang gặp một số khó khăn để tìm cách sử dụng biểu mẫu "let". Trong ví dụ dưới đây, tôi muốn liên kết cục bộ giá trị "cols" để làm việc trên nó sau này trong hàm. Những gì tôi nhận thấy, tuy nhiên, là nếu tôi sử dụng "cho" chức năng sel-opt-tmp sẽ trả về một giá trị nil thay vì một danh sách.Clojure: để phạm vi và chức năng trả về giá trị
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
* Mã trên trả về giá trị bằng 0.
Tôi hiểu rằng "cho phép" chỉ liên kết một giá trị trong phạm vi chức năng, những gì tôi không biết là nếu có cách để chuyển giá trị ra khỏi phạm vi cho phép. Có lẽ có cái gì đó giống như "trở lại" mà tôi không biết? Hoặc điều này chỉ đơn giản là thiết kế xấu và tôi không nên sử dụng ràng buộc ở tất cả trong trường hợp này (điều này có xu hướng tạo ra chuỗi dài các chức năng khó đọc mặc dù)?
Biểu mẫu 'let' hoàn trả về biểu thức cuối cùng chứa trong đó, trong trường hợp của bạn là ẩn nil'. Bạn cần sử dụng 'cols' trong phần thân của biểu mẫu' let' để trả về nó. – seh
'" let "chỉ liên kết một giá trị trong phạm vi của hàm' - điều đó không hoàn toàn đúng. 'let' có thể xuất hiện hầu hết mọi nơi, và phạm vi của các tên bị ràng buộc là biểu thức 'let'. –