Android Question width = width*(pct*(width>height)) ... Possible?

Marc De Loose

Member
Licensed User
I would like to write:
width = width*(pct*(width>height))

what would resolve to:
(if width is greater than height)
width = width*(pct*1)

if not
width = width *(pct*0)

is width = width*(pct*(width>height)) somehow possible?
 

LucaMs

Expert
Licensed User
No, your code can not work.

I would use:
B4X:
Public Sub IIF(c As Boolean, TrueRes As Object, FalseRes As Object) As Object
   If c Then Return TrueRes Else Return FalseRes
End Sub

width = width * pct * IIF(width > height, 1, 0)
 
Last edited:

MarkusR

Well-Known Member
Licensed User
or make this boolean a number
B4X:
Sub Test

    Dim width,height,pct As Float
    width = 200
    height  =100
    pct = 5
    
    width = width*(pct*B(width>height))

    Log(width)

End Sub

Sub B(truefalse As Boolean) As Float
    
    If truefalse Then Return 1.0 Else Return 0.0
        
End Sub
 

emexes

Well-Known Member
Licensed User
I would like to write:
width = width*(pct*(width>height))

what would resolve to:
(if width is greater than height)
width = width*(pct*1)

if not
width = width *(pct*0)

I'd be inclined to just go with:
B4X:
if width > height then
    width = width * pct
else
    width = 0
end if
which I feel wins on simplicity, efficiency and brevity, but if you must have it as one statement (if we ignore the called function...) then LucaMs wins:
B4X:
width = IIF(width > height, width * pct, 0)
with Brandsum in a close but cryptic second place, assuming width and height are integers ;-)
 
Last edited:

Brandsum

Well-Known Member
Licensed User
Note that IIF is a useful function to be reused; otherwise it was worth using a full "if" block.
That's true. But I just tried to give a minimal solution for what he wanted width = width*(pct*(width>height))

 
Top