-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
In Matrix.lua, the function mat.newrdn() intends to set the parameter positive to false if it's not passed (i.e it's a nil value).
--New random matrix
function mat.newrdn(rows,cols,positive)
positive = false or positive
local grid ={}
grid.rows = rows
grid.cols = cols
grid.matrix = {}
local j = 1
for i=1,rows do
grid.matrix[i] = {}
for k=1,cols do
if positive then
grid.matrix[i][k] = math.random()
else
grid.matrix[i][k] = math.random(-1,0) + math.random()
end
j = j+1
end
end
return grid
end
As written, the line:
positive = false or positive
will always behave as:
positive = positive
because false will always evaluate to false, and cause or to return the right hand value, positive.
The code should have been written as:
positive = positive or false
That is, if positive wasn't passed as a parameter and so is set to nil, the line should set it to false.
The code accidentally works because if* treats nil the same as false, so even though the line doesn't change the value of positive, it still ends up taking the correct branch of the user hasn't specified a value for positive.
Still, the line should be corrected to match the intent.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels