如果你想用行號打印語句,你怎麼做?我們如何在Scala中用行號跟蹤表達式/打印語句?
0
A
回答
2
這取決於你想要做什麼。
隨着scala-trace-debug庫,你可以輸入這樣的事情:
Debug.trace(1 + 2)
而得到這樣的:
"3" in thread main:
path.to.file(file.Scala: 22) // click-able stack trace
您可以自定義堆棧跟蹤的行數,像這樣:
Debug.trace(1 + 2, 3) // 3 lines of stack trace
如果你做info.collaboration_station.debug._
,你甚至可以這樣做:
val three = 3.trace
...
"3" in thread main:
path.to.file(file.Scala: 22)
最後,有一個表達式的支持:不同於其他圖書館
Debug.traceExpression{
val myVal = 4
1 + 2 + myVal
}
...
"{
val myVal = 4;
(3).+(myVal)
} -> 7" in thread main:
at main.Main$.main(Main.scala:12)
,這是更面向調試。如果我想提供正在發生的事情的歷史記錄,並且我不希望用戶看到堆棧跟蹤,我不會使用此工具。
3
查看Haoyi Li的sourcecode圖書館,我認爲它給了你你要找的東西。
源代碼是一個小Scala庫對提供在運行時常見的「源代碼 」上下文到您的程序,類似於Python的 __name__,C++的__LINE__或Ruby的__FILE__。例如,您可以通過()語法或通過隱式的方式請求 當前文件的文件名和行號。
見例如https://github.com/lihaoyi/sourcecode#logging
您可以使用sourcecode.File和sourcecode.Line定義日誌 功能,可自動捕捉它們的行號和文件名
def log(foo: String)(implicit line: sourcecode.Line, file: sourcecode.File) = {
println(s"${file.value}:${line.value} $foo")
}
log("Foooooo") // sourcecode/shared/src/test/scala/sourcecode/Tests.scala:86 Fooooo
相關問題
- 1. AS3:如何打印跟蹤語句當前類進行調試?
- 2. 爲什麼org.hibernate.JDBCException不在堆棧跟蹤中打印sql語句
- 3. 如何在單行中打印語句
- 4. 在MonoMac應用程序堆棧跟蹤上打印行號
- 5. 問號如果在打印語句
- 6. 跟蹤oracle語句
- 7. 如何在Z3中打印出整個符號表達式?
- 8. 評估打印語句中的表達式
- 9. 人們如何跟蹤內部編號?
- 10. 如何在正則表達式中跟蹤和保存模式?
- 11. 如何打印Groovy堆棧跟蹤?
- 12. 如何打印StackOverflowException的堆棧跟蹤
- 13. 在表中打印行號
- 14. 在JSP中打印堆棧跟蹤
- 15. 在arm-linux中打印堆棧跟蹤
- 16. 如何跟蹤Twitter跟隨我們和Facebook像我們一樣?
- 17. 如何打印SQL語句?
- 18. 正則表達式模式匹配時只解析並打印堆棧跟蹤
- 19. Haskell - 執行後打印跟蹤
- 20. 禁用Flex 3中的跟蹤語句
- 21. 打印堆棧跟蹤
- 22. Spotipy:打印跟蹤信息
- 23. 打印堆棧跟蹤obfusated
- 24. 在下一行中打印語句
- 25. 如何使用PRINT語句跟蹤存儲過程執行?
- 26. NUnit的/單不打印堆棧跟蹤行號甚至--debug
- 27. 如果語句在hybrid_property表達式中
- 28. Oracle:跟蹤SQL語句
- 29. oracle jdbc語句跟蹤器
- 30. 跟蹤和調試語句