2011-08-20 14 views
10

tôi chạy groovysh, và gõ đoạn mã sau:MissingPropertyException trong groovysh

groovy:000> String s = "Hello" 
===> Hello 
groovy:000> s 
ERROR groovy.lang.MissingPropertyException: 
No such property: s for class: groovysh_evaluate 
     at groovysh_evaluate.run (groovysh_evaluate:2) 
     ... 
groovy:000> 

Làm thế nào để truy cập s đây?

(Nếu tôi thay đổi String s = "Hello" để s = "Hello", tôi có thể truy cập vào nó. Nhưng tôi muốn biết làm thế nào để truy cập vào nó trong ví dụ)


CẬP NHẬT

Tôi muốn sử dụng String s = "Hello" để xác định một biến vì tôi muốn khai báo kiểu của nó. Ví dụ: nếu tôi viết:

Date date = [] 

Ngày sẽ là java.util.Date. Nhưng nếu tôi viết:

date = [] 

Nó sẽ là ArrayList.

Trả lời

11

Biểu thức s = "Hello" đặt biến hệ vỏ, biểu thức String s = "Hello" đặt biến cục bộ không được lưu vào môi trường của trình bao. Vui lòng xem Groovy Shell documentation để biết thêm thông tin. Tôi không hoàn toàn chắc chắn những gì bạn đang cố gắng đạt được nhưng bạn có thể muốn đi với Groovy Console để đánh giá các kịch bản Groovy.

+0

cảm ơn bạn, ** bảng điều khiển groovy ** có thể cho phép tôi làm điều đó. Ý bạn là, không có cách nào để lấy 's' từ' String s = ... 'trong' groovysh', đúng không? – Freewind

+1

Bạn có thể bọc nó trong một [hàm] (http://groovy.codehaus.org/Groovy+Shell#GroovyShell-Functions) và trả về 's' bất cứ khi nào bạn cần. Đó sẽ là một lựa chọn khác. –

0

Bạn có thể viết

date = [] as Date 

để đảm bảo ngày thực sự có kiểu Date. Tôi đã có một vấn đề tương tự và sử dụng

bin = [1, 26, 42 ,7] as byte[] 
bin.encodeBase64() 
1

chỉ cần đặt nó vào interpreterMode

groovy:000> :set interpreterMode

và bạn có thể chỉ thẳng sử dụng

Date date = []

ref: http://www.groovy-lang.org/groovysh.html#GroovyShell-InterpreterMode

+1

TY. Đây là những gì tôi mong đợi với tư cách là người dùng Python. bây giờ tôi thực thi luôn 'groovysh --define = interpreterMode' – jgomo3