加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Scala中调试功能代码

发布时间:2020-12-16 09:47:13 所属栏目:安全 来源:网络整理
导读:调试功能代码肯定比调试命令式代码更棘手。参见讨论 here,here和 here.“功能”调试应该支持检查函数/ closure / monads的返回值。任何调试器/ IDE都有(计划有)检查中间返回值的能力吗? 例如,要在Scala中调试此行,我应该能够遍历4个函数调用,并检查每个
调试功能代码肯定比调试命令式代码更棘手。参见讨论 here,here和 here.“功能”调试应该支持检查函数/ closure / monads的返回值。任何调试器/ IDE都有(计划有)检查中间返回值的能力吗?

例如,要在Scala中调试此行,我应该能够遍历4个函数调用,并检查每个步骤返回的值,然后返回r

val r=(ls filter (_>1) sort (_<_) zipWithIndex) filter {v=>(v._2)%2==0} map{_._1}

解决方法

我认为每个人的建议,打破这件事,更容易管理的块是最好的方法。调试较小表达式的一个技巧是窃取Ruby的tap函数,如 here所述。“tap”允许你在这样的链中间粘贴一个表达式,或者打印出一些调试值,如下所示:

val ls = List(1,2,3).map(_ * 2)
                .tap(soFar => println("So far: " + soFar))
                .map(_ * 2)
println(ls)

这将打印出:

So far: List(2,4,6)
List(4,8,12)

它帮助我每一次在一段时间。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读