无法转换类型' String'的返回表达式返回类型'(Int) - >字符串'

时间:2016-09-25 13:09:51

标签: swift swift2 swift3

这是正常的工作功能:


    (request.session.get("key").flatMap { key =>
       cache.get[Uservo](key)
      } map { uservo =>
         // need to set cache with "key" again, or else the memory will timeout in 10 minutes
         cache.set(request.session.get("key").get, uservo, cacheTimeout)
         // do the action..
      }).orElse {
         // failed and return to login home page
         Some(Future(Redirect("/").withNewSession))
      }

我可能认为函数可以采用数量参数并返回字符串

func doSomeThing(productName : String , productPrice : Double)  -> String {

        return "good jobs"
    }

但低于错误抛出:

  

第14行的错误,第11行:无法转换类型'字符串'的返回表达式返回类型'(Int) - >字符串'      返回"产品名称(productName)每个价格是(productPrice),总价格(totaPrice)"             ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如何解决这个问题?

注意:我想做 func doSomeThing(productName: String , productPrice: Double) -> (Int) -> String{ func totaPrice(quantity : Int) -> Double { return Double(quantity) * productPrice } return "Product Name \(productName) each price is \(productPrice) , total price \(totaPrice)" } let totaPrice = doSomeThing(productName: "iPhone", productPrice: 649) print(totaPrice(5)) print(totaPrice(3)) 函数。

2 个答案:

答案 0 :(得分:3)

你的函数标题表示你正在返回一个带Int并且返回String的闭包,这就是你的函数应该返回的。

以下是使用所有输入构建String

的示例
func doSomeThing(productName: String, productPrice: Double) -> (Int) -> String {
    return { n in "\(n) \(productName)s cost \(productPrice * Double(n))" }
}

let iPhone = doSomeThing(productName: "iPhone", productPrice: 649)
print(iPhone(5))
print(iPhone(2))

输出:

  
    

5部iPhone售价3245.0
    2部iPhone售价1298.0

  

答案 1 :(得分:1)

我认为问题是你试图在一种方法中返回两次。相反,只需让你的方法获取3个参数并返回一个String。

func doSomeThing(productName : String , productPrice : Double, quantity : Int) -> String {
    let total = productPrice * Double(quantity)
    return "The total for \(productName) is \(total)"
}

doSomeThing(productName: "my product", productPrice: 1.99, quantity: 1)