我想实现一个方法 dim(x,y) 为矩阵(y 行,x 列)分配空间。
我想通过传递一个可选函数'filler'来使“dim(x,y)”更强大,然后'dim'会将位于(x,y)的元素设置为filler(x,y)
我的代码如下:
List2D dim := method(x, y, z,
target := list()
filler := if(z == nil,
method(return nil),
z)
for(i, 1, y,
subTarget := list()
for(j, 1, x,
subTarget append( filler(i,j) ))
target append(subTarget) )
return target)
当使用 2 个参数调用“dim”时它运行良好,但失败了
List2D dim(3,2, method(x,y, 10*x+y))
在行filler := if(z == nil
抛出异常异常说nil does not respond to '*'
我意识到当与 nil 比较时,参数“z”被激活了。
所以我想知道如何让我的“List2D dim”正常工作?