Tôi mới dùng Groovy và tôi đang cố viết một DSL nhỏ cho một số tác vụ cụ thể. Với mục đích này, tôi đã cố gắng để giải quyết một vấn đề như thế này dưới đây: Tôi muốn in (và/hoặc trả lại) 5 bằng cách gọi mã này (mà không sử dụng parantheses):DSL với Groovy -> chuyển giá trị tham số
give me 5
tôi mong đợi định nghĩa như sau sẽ hoạt động:
def give = {clos -> return clos}
def me = {clos -> println clos; return clos}
nhưng thực tế là không. Bạn có thể vui lòng giúp tôi cách xác định "cung cấp" và "tôi" để trả về giá trị 5 với cụm từ "tặng tôi 5" trong đó tôi phải đóng, cung cấp cũng có thể là metaClass, thuộc tính, v.v.
Cảm ơn trước! Iv
Cảm ơn bạn! Đó chính xác là những gì tôi đang tìm kiếm. Bạn có thể tham khảo một số nơi mà tôi có thể đọc thêm về cấu trúc [:]. WithDefault không? – ivita
@ivita Đừng lo! Nó được định nghĩa [ở đây] (http://groovy.codehaus.org/groovy-jdk/java/util/Map.html#withDefault%28groovy.lang.Closure%29).Một điều cần lưu ý là '' 5'' nó được in ra thực sự là một String, và không phải là một 'Integer'. Điều này là bởi vì nó cố gắng để có được '5' như một tên thuộc tính (String), do đó trả về một String cũng như –
Tôi cần nó như là chuỗi :-) Cảm ơn! – ivita