Satır numarasına sahip baskı ifadeleri istiyorsanız, bunu nasıl yapıyorsunuz?Scala'da ifadeleri/baskı ifadelerini satır numaralarıyla nasıl izleyebiliriz?
cevap
Ne yapmak istediğinize bağlı olarak değişir. scala-trace-debug kütüphanesi ile
, böyle bir şey yazabilirsiniz:
Debug.trace(1 + 2)
Ve bu olsun:
"3" in thread main:
path.to.file(file.Scala: 22) // click-able stack trace
Çok gibi yığın izlemesi satır sayısını özelleştirebilirsiniz:
Debug.trace(1 + 2, 3) // 3 lines of stack trace
Ve info.collaboration_station.debug._
yaparsanız, bunu yapabilirsiniz:
val three = 3.trace
... Nihayet
"3" in thread main:
path.to.file(file.Scala: 22)
, ifadeler için destek var:
Debug.traceExpression{
val myVal = 4
1 + 2 + myVal
}
...
"{
val myVal = 4;
(3).+(myVal)
} -> 7" in thread main:
at main.Main$.main(Main.scala:12)
diğer kütüphanede farklı olarak, bu daha fazladır hata ayıklamaya doğru. Ne olup bittiğine dair bir tarih vermek istedim ve kullanıcının bir yığın izi görmesini istemedim, bu aracı kullanmazdım.
Haoyi Li'nin sourcecode kütüphanesini kontrol edin, aradığınızı size verir. o Python'un __name__, C++ 'ın __LINE__ veya Ruby'nin __FILE__ benzer çalışma zamanında programınıza ortak "kaynak kodu" bağlam sağlar için
Sourcecode küçük Scala kütüphanesidir. Örneğin, , geçerli dosyanın dosya adı ve satır numarasını (0) () sözdizimi yoluyla veya bir örtük yoluyla sorabilirsiniz. örneğin
Bkz https://github.com/lihaoyi/sourcecode#logging
Bunu otomatik olarak satır numarası ve dosya adı
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
yakalama fonksiyonları log tanımlamak için sourcecode.File ve sourcecode.Line kullanabilirsiniz
- 1. Kargo çalıştırırken satır numaralarıyla yığın izlemesi
- 2. JavaFX'te satır numaralarıyla TextArea oluşturmak için sınıflar nasıl içe aktarılır
- 3. Scalada eşleşen desen
- 4. Asansörde/Scalada MVC
- 5. Arangosh terminalini kullanırken zamanı nasıl izleyebiliriz?
- 6. Yeni facebook hashtag uygulamasıyla hashtag'leri nasıl izleyebiliriz?
- 7. `npm install` uyarıları veren paketleri nasıl izleyebiliriz?
- 8. Scalada örtülü kaldırma
- 9. Scalada spark.implicits._ içe aktarılıyor
- 10. Scalada Haskell FixF tanımlanması
- 11. Dolar işareti, scalada ne yapar
- 12. db ifadelerini dosyadan çalıştırın
- 13. Küme ifadelerini değerlendirme
- 14. C# - Eksik scope.Complete() ifadelerini nasıl denetlerim?
- 15. mysqli ifadelerini kullanarak insert_id nasıl alınır
- 16. Scalada dize adına göre nesne örneği alma
- 17. Üçlü soru işareti scalada ne anlama geliyor?
- 18. SET ifadelerini normal ifadelerle birleştirin
- 19. Try catch ifadelerini atlıyor musunuz?
- 20. C, işlev ifadelerini destekliyor mu?
- 21. Nunit konsol yürütücüsünde kategori ifadelerini kullanma
- 22. Satır silme işleminden sonra ag-ızgara nasıl yükseltilir/yenilenir?
- 23. Sonar'daki yinelenen içe aktarma ifadelerini yok say.
- 24. Robot Frame Ride execute branch ifadelerini nasıl kullanırım?
- 25. jQuery ifadelerini çalışma zamanında yüklenen öğelere nasıl uygularım?
- 26. Neden Immediate Penceresinde lambda ifadelerini kullanamıyorum?
- 27. Mockito yapıları için ithalat statik ifadelerini bulma
- 28. VB.NET kaynak kodunda kullanılmayan 'Imports' ifadelerini bulma
- 29. ES6, adlandırılmış işlev ifadelerini gereksiz yapıyor mu?
- 30. Tabloya eklerken select ifadelerini kullanabilir miyim?