gpt4 book ai didi

ruby - 在 Ruby 中将方法作为参数传递

转载 作者:数据小太阳 更新时间:2023-10-29 06:17:53 25 4
gpt4 key购买 nike

我正在尝试对 Ruby 进行一些改动。因此,我尝试实现“Programming Collective Intelligence”Ruby 一书中的算法(用 Python 给出)。

在第 8 章中,作者传递了一个方法 a 作为参数。这似乎在 Python 中有效,但在 Ruby 中无效。

方法在这里

def gaussian(dist, sigma=10.0)
foo
end

想用另一种方法调用它

def weightedknn(data, vec1, k = 5, weightf = gaussian)
foo
weight = weightf(dist)
foo
end

我得到的只是一个错误

ArgumentError: wrong number of arguments (0 for 1)

最佳答案

引用 block 和 Procs 的注释是正确的,因为它们在 Ruby 中更常见。但是如果你愿意,你可以传递一个方法。您调用 method 来获取方法并调用 .call 来调用它:

def weightedknn( data, vec1, k = 5, weightf = method(:gaussian) )
...
weight = weightf.call( dist )
...
end

关于ruby - 在 Ruby 中将方法作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/522720/

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