Recursion Kotlin:具有递归的高阶函数
我必须创建一个返回lambda的高阶函数来学习Kotlin函数编程 这是一节课Recursion Kotlin:具有递归的高阶函数,recursion,kotlin,higher-order-functions,Recursion,Kotlin,Higher Order Functions,我必须创建一个返回lambda的高阶函数来学习Kotlin函数编程 这是一节课 class Product (val productName : String, val price : Double, val rating : Int) { override fun toString () = "$productName, $price, $rating" } 这是我的职责 fun productFactory (productName: String , rating : Int)
class Product (val productName : String, val price : Double, val rating : Int) {
override fun toString () = "$productName, $price, $rating"
}
这是我的职责
fun productFactory (productName: String , rating : Int) : (Double) -> Product {
val x : (Double) -> Product = productFactory(productName, rating)
return x
}
这就是我调用函数的方式
val cheese = productFactory("Gouda", 5)
val product = cheese(4.99)
虽然它似乎与所需的构造函数一起工作,但它会导致StackOverflower错误,我不知道问题出在哪里。有人能帮我吗?您的函数
productFactory
正在递归地调用自身,无法退出递归,因此它总是会导致堆栈溢出
它返回的函数当然不应该是它自己,因为行为是不同的
您可以将返回的函数定义为lambda:
fun productFactory (productName: String , rating : Int) : (Double) -> Product {
return { price -> Product(productName, price, rating) }
}
或者使用函数语法并使用:
运算符返回函数:
fun productFactory (productName: String , rating : Int) : (Double) -> Product {
fun produce(price: Double) = Product(productName, price, rating)
return ::produce
}
什么是
productFactory
?好的。我纠正它