2016-03-25 17 views
7

Tôi không thể tìm thấy các chuyển đổi tiềm ẩn hoặc các giá trị đối số ẩn được sử dụng trong mã Scala. Điều này làm cho việc đọc các dự án nguồn mở rất khó hiểu.cách tìm hàm hoặc biến tiềm ẩn trong scala

Bí quyết implicitly chỉ có thể giúp kiểm tra xem có biến tiềm ẩn hợp lệ của một số loại hay không, nhưng không thể biết được biến số ngầm định đã được xác định ở đâu.

scala> implicitly[(Int) => RichInt] 
res2: Int => scala.runtime.RichInt = <function1> 

Có cách nào dễ dàng để tìm định nghĩa về chuyển đổi và giá trị tiềm ẩn đang được sử dụng bởi một đoạn mã không? Nếu tập tin mã nguồn là rất dài, nó sẽ là một công việc rất lớn.

Trả lời

9

Một mẹo nhỏ mà đã được bao phủ trên SO:

scala> import reflect.runtime._,universe._ 
import reflect.runtime._ 
import universe._ 

scala> reify { "abc".size } 
res1: reflect.runtime.universe.Expr[Int] = Expr[Int](Predef.augmentString("abc").size) 

REPL gần đây:

scala> 3 until 4 //print<hit tab completion> 
    scala.Predef.intWrapper(3).until(4) // : scala.collection.immutable.Range 
Các vấn đề liên quan