【问题标题】:Capture a return value for logging and then return the value in Scala捕获日志记录的返回值,然后在 Scala 中返回该值
【发布时间】:2022-05-20 01:03:39
【问题描述】:

捕获一个值(可能不是幂等的)以记录和返回相同值的最“scala-ic”方式是什么。

我认为'return'语句是唯一的方法,但显然在scala中应该避免使用'return'。

用例:

def myfunc(argument) : ReturnType{
       val response:ReturnType = dependency()
       // dependency() is not idemptotent
       // so calling more than once will have side-effects
       logger.debug(response.member1 ,  response.member2)
       return response
}

有没有办法在不使用'return'关键字的情况下实现这一点。

我是 scala 的新手,所以我所说的某些(或大部分)内容可能是错误的,并且很乐意得到纠正。

【问题讨论】:

  • 只需删除单词return - 评估最后一个表达式的结果会自动作为函数的结果返回,因此仅response 本身就可以工作。
  • 不太清楚你在问什么,但你可能在追求红隼模式:stackoverflow.com/questions/23231509/…

标签: scala return


【解决方案1】:

只是具体化@Shadowlands 的答案。

def myfunc(argument: ArgType): ReturnType {
   val response = dependency()
   logger.debug(response.member1, response.member2)
   response
}

【讨论】:

  • 谢谢!在这种情况下是否有理由避免使用“return”关键字。似乎它通过 return 语句使代码更具可读性(我的主观意见)。
  • @user462455,它使它更“可读”,主要是因为你已经习惯了。停止使用一段时间,您可能不会错过它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-09-19
  • 2014-01-23
  • 2016-09-09
相关资源
最近更新 更多