## Function that switch a boolean value

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
jefolo
Prole
Posts: 12
Joined: Wed Dec 23, 2020 3:20 pm

### Function that switch a boolean value

Hi,
another newbie question.
I'm trying to make a function that switch a boolean value. In particular I would like to pass a parameter to this function (the parameter is the boolean variable) and the function change it to true or false.

I wrote this, but nothing happen, could somebody help me?

Code: Select all

test = true

function love.draw()
if test then
love.graphics.print("Test true")
else
love.graphics.print("Test false")
end
end

function love.mousepressed( x, y, button, istouch, presses )
if button==1  then
switchParameter(test)
end
end

function switchParameter(param)
param = param
if param == false
then
param = true
else
param = false
end
end

Thank you!
darkfrei
Party member
Posts: 226
Joined: Sat Feb 08, 2020 11:09 pm

### Re: Function that switch a boolean value

Code: Select all

function love.mousepressed( x, y, button, istouch, presses )
if button==1  then
test = not test -- turns false to true and true to false
end
end

darkfrei
Party member
Posts: 226
Joined: Sat Feb 08, 2020 11:09 pm

### Re: Function that switch a boolean value

Another way: return the new value and set it to the test value

Code: Select all

test = true

function love.draw()
if test then
love.graphics.print("Test true")
else
love.graphics.print("Test false")
end
end

function love.mousepressed( x, y, button, istouch, presses )
if button==1  then
test = switchParameter(test)
end
end

function switchParameter(param)
if param then
return false
else
return true
end
end
sphyrth
Party member
Posts: 258
Joined: Mon Jul 07, 2014 11:04 am
Contact:

### Re: Function that switch a boolean value

Here's another take:

Code: Select all

function switchParameter(param)
if param and param == true then
return false
else
return true
end
end

jefolo
Prole
Posts: 12
Joined: Wed Dec 23, 2020 3:20 pm

### Re: Function that switch a boolean value

darkfrei wrote: Mon Dec 28, 2020 1:33 pm Another way: return the new value and set it to the test value

Code: Select all

test = true

function love.draw()
if test then
love.graphics.print("Test true")
else
love.graphics.print("Test false")
end
end

function love.mousepressed( x, y, button, istouch, presses )
if button==1  then
test = switchParameter(test)
end
end

function switchParameter(param)
if param then
return false
else
return true
end
end
That was what I've been looking for, thank you.
I should study better the way return work :-)
pgimeno
Party member
Posts: 2613
Joined: Sun Oct 18, 2015 2:58 pm

### Re: Function that switch a boolean value

@sphyrth why the double comparison? If param is true, the first check will always be true, therefore the whole condition will always be true. If it is anything else, the second condition will always be false, making the whole condition always false. Consequently, the first check is redundant.

If you know that param will always be a boolean, you can use just 'if param then...'; if you want to ensure that it's a boolean, you can use 'assert(type(param) == "boolean")' before the comparison.
sphyrth
Party member
Posts: 258
Joined: Mon Jul 07, 2014 11:04 am
Contact:

### Re: Function that switch a boolean value

pgimeno wrote: Mon Dec 28, 2020 7:44 pm @sphyrth why the double comparison?
I have this a habit of thinking "What if param == nil?", and that slipped into my style. Now that I think about it, it IS unnecessary given the context.

### Who is online

Users browsing this forum: tomxp411 and 34 guests