这是正常的工作功能:
(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))
函数。
答案 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)