2013-11-01 10 views
6

Sto solo scoprendo Nimrod e ho una domanda di base (non ho trovato la risposta nella documentazione).In Nimrod, qual è la sintassi per le operazioni bit a bit?

Come si utilizzano le operazioni bit a bit? Ho il codice seguente, dove x è definito come un int:

if x and 1: 

Questo non può essere compilato:

Error: type mismatch: got (range 0..1(int)) but expected 'bool' 

E se provo:

if and(x, 1) 

ottengo

Error: type mismatch: got (tuple[int, int]) 
but expected one of: 
system.and(x: int16, y: int16): int16 
system.and(x: int64, y: int64): int64 
system.and(x: int32, y: int32): int32 
system.and(x: int, y: int): int 
system.and(x: bool, y: bool): bool 
system.and(x: int8, y: int8): int8 

Qual è il trucco?

risposta

7

and fa a bit e; il problema è piuttosto che if si aspetta un bool, non un intero. Se vuoi un confronto di tipo C a 0, aggiungilo semplicemente:

>>> if 1: 
... echo("hello") 
... 
stdin(10, 4) Error: type mismatch: got (int literal(1)) but expected 'bool' 
>>> if 1!=0: 
... echo("hello") 
... 
hello 
+0

No, ho davvero bisogno di eseguire un bit per bit e sulla mia variabile; più precisamente, qui, voglio controllare se l'ultimo bit è impostato o meno. – Fabien

+1

Quindi usare '(x e 1)! = 0'? –

+0

Sì, ha funzionato, grazie. – Fabien