2016-04-18 15 views
8

Có phương pháp gọn gàng nào có thể in tên lớp của biến trong Scala không?Loại in biến trong Scala

Thỉnh thoảng tôi thấy val result = foo(a,b,c), vì phương pháp foo có thể trả về các loại đối tượng khác nhau và nếu tôi có thể in loại kết quả, nó sẽ tuyệt vời.

+1

Trong intellij bạn có thể sử dụng 'alt' +' = ' –

+0

@ Łukasz, cảm ơn và bỏ phiếu, và ý tôi là trong giao diện điều khiển khi chương trình đang chạy động, vì các kiểu được quyết định bằng cách chạy giá trị động. :) –

Trả lời

11

Nhanh chóng và dơ bẩn lừa tôi thường sử dụng

val result: Nothing = foo(a,b,c) 

Trình biên dịch sẽ nâng cao một lỗi, cung cấp cho bạn thông tin về các kiểu trả về thực tế nó được tìm thấy.

Ví dụ từ REPL

scala> val foo: Nothing = 42 
<console>:1: error: type mismatch; 
found : Int(42) // <---- this is what you care about 
required: Nothing 
     val foo: Nothing = 42 

Nếu bạn sử dụng một IDE, bạn có thể sử dụng nhiều "tinh vi" lựa chọn:

+0

Cảm ơn Gabriele, hãy bỏ phiếu. Có cách nào để in tự động vì phương thức 'foo' có các kiểu trả về động khác nhau và sẽ quyết định thời gian chạy. –

+1

@LinMa, đó là một câu hỏi rất khác so với câu hỏi bạn đã hỏi :) Tôi chắc chắn cần một ví dụ toàn diện hơn để đưa ra một câu trả lời phù hợp –

+1

Nếu bạn muốn một lớp thời gian thực chỉ sử dụng 'result.getClass'. 'Set (1) .getClass' sẽ xuất' class scala.collection.immutable.Set $ ​​Set1' –