首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Scala需要递归函数的返回类型?

为什么Scala需要递归函数的返回类型?
EN

Stack Overflow用户
提问于 2010-09-18 05:23:09
回答 1查看 15.9K关注 0票数 23

在下面的代码片段中,我有一个递归函数调用,用于在网络调用失败时进行重试(Amazon SimpleDB偶尔会返回503,并要求重试。)

当我尝试编译时,Scala报告recursive method simpledb_update needs result type

代码语言:javascript
复制
// sends data to SimpleDB. Retries if necessary
def simpledb_update(name: String, metadata: Map[String,String], attempt: Int) = {
 try {
  db(config("simpledb_db")) += (name, metadata)
 } catch {
  case e =>
   // if it fails, try again up to 5 times
  if(attempt < 6)
  {
   Thread.sleep(500)
   simpledb_update(name, metadata, attempt + 1)
   } else
     AUlog(name + ": SimpleDB Failed")
   }
 }

为什么在递归函数上需要这样做?我的想法是只返回一个true/false布尔值来满足编译器...下面的代码可以正常编译。

代码语言:javascript
复制
// sends data to SimpleDB. Retries if necessary
 def simpledb_update(name: String, metadata: Map[String,String], attempt: Int): Boolean = {
 try {
  db(config("simpledb_db")) += (name, metadata)
  true
 } catch {
  case e =>
   // if it fails, try again up to 5 times
   if(attempt < 6)
   {
    Thread.sleep(500)
    simpledb_update(name, metadata, attempt + 1)
   } else
    AUlog(name + ": SimpleDB Failed")
    false
  }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3739133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档