Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion Kotlin:具有递归的高阶函数_Recursion_Kotlin_Higher Order Functions - Fatal编程技术网

Recursion 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)

我必须创建一个返回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) : (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
?好的。我纠正它