gpt4 book ai didi

斯卡拉函数指针

转载 作者:行者123 更新时间:2023-12-04 18:07:34 25 4
gpt4 key购买 nike

谷歌没有帮助我解决这个问题,我希望这并不意味着不可能:

在我的类里面,我想要一个定义了签名但主体未定义的方法(method1)

将有许多满足此签名的已定义方法(impl1、impl2、impl3)

当我初始化对象时,我将选择(基于某些标准)将哪个方法实现 impl1、impl2、impl3 分配给函数指针 method1

基本上我在问我如何才能拥有一个可以指向任何满足其签名的函数的函数指针。

编辑:

所以,事实证明它实际上非常简单:

var method: Int => Int = (x => x+1)

method = (x => x-1)
method = (x => x*2)
etc...

我之前的问题是我使用“val”或“def”来定义“方法”

不知道为什么不直接建议这样做。许多人喜欢将函数作为某个辅助类的参数然后使用特定实现初始化该类的方式。也许我缺少一些东西。

编辑 2:我现在意识到我没有得到我正在寻找的答案,因为我没有正确表达我的问题,我应该说我想要 C# 中的“委托(delegate)”行为。

最佳答案

在 Scala 中,函数是对象,所以你可以这样做:

class Foo(val func : Int => Int){
}
object Main{
def main(args: Array[String]) {
val foo1=new Foo(x => x + 1)
val foo2=new Foo(x => x + 2)
val foo3=new Foo(x => x + 3)
println(foo1.func(10)) // Prints 11
println(foo2.func(10)) // Prints 12
println(foo3.func(10)) // Prints 13
}
}

关于斯卡拉函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23364314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com