我想尝试一下 Ruby。因此,我试图用书籍《Programming Collective Intelligence》中提供的算法(以 Python 为基础)来实现它们。
在第8章中,作者将一个方法作为参数传递。这在 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)
method( :<name> )
。您可以将该结果存储在变量或参数中,并从那时起像任何其他变量一样将其传递给子函数。 - user1115652SomewhereElse.method(:method_name)
。这很棒! - medik:func.class
,但那只是一个symbol
。 - crackpotHouseplant