尝试将自定义函数传递给以下函数,但我没有运气。
import numpy as np
def writeCFloat(f, ndarray):
np.asarray(ndarray, dtype=np.float32).tofile(f)
def writeCInt(f, ndarray):
np.asarray(ndarray, dtype=np.int32).tofile(f)
def writeC80(f, string):
np.asarray(string, dtype='a80').tofile(f)
if __name__ == "__main__":
f = open('test.out', mode='wb')
ndarray = np.zeros((10000,10000))
writeCInt(f, ndarray)
writeCFloat(f, ndarray)
writeC80(f, 'coordinates')
试着像这样打电话:
defmodule M do
def custom_fn([head|tail],fnce) do
fnce.(head)
custom_fn(tail,fnce)
end
def custom_fn([]), do: nil
end
获取此
M.custom_fn([1,2,3], (fn(x) -> x * 10 end))
此外,以下消息说明了什么? M.custom_fn / 2
更具体地说,我不理解 / 2 。
答案 0 :(得分:2)
您忘记将第二个参数添加到基本案例中。就像错误所说的那样,现在你没有任何符合([], <function>)
的条款。
def custom_fn([]), do: nil
应该是
def custom_fn([], _), do: nil
答案 1 :(得分:2)
/2
是function arity。
问题根本不在于功能。
def custom_fn([head|tail],fnce) do
fnce.(head)
# ⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓⇓ HERE
custom_fn(tail,fnce)
end
空数组的最后一次调用不匹配。您应该更新第二个子句以接受第二个参数:
def custom_fn([], _), do: nil
答案 2 :(得分:2)
正如其他答案给出的解释一样,我会给出正确的版本。
defmodule M do
def custom_fn([], _), do: nil
def custom_fn([head|tail],fnce) do
fnce.(head)
custom_fn(tail,fnce)
end
end
IO.inspect M.custom_fn([1,2,3], (fn(x) -> x * 10 end))