Operators: Logical
● Beginner3 min
and is true when both sides are; or when either is; not turns true to false.
fn main() {
const age = 25
const member = false
print(age >= 18 and member)
print(age >= 18 or member)
print(not member)
}The program ran and printed:
kavach run logical.kav
falsetruetrue
The right side is worked out only when needed: in a and b, if a is false, b is skipped:
fn side() -> Bool {
print("side() ran")
true
}
fn main() {
print(false and side())
print(true or side())
print(true and side())
}The program ran and printed:
kavach run short.kav
falsetrueside() rantrue
Words, not symbols
!, && and ||, from C, Java and JavaScript, are refused, and each message says which word to write. kavach fix writes them for you:
fn main() {
const locked = false
const open_hours = true
const alarm = false
if !locked && open_hours || alarm {
print("come in")
}
}kavach check
error: Kavach has no `!` for "not": write `not`, as in `not locked` (spec 1.8)
--> src/main.kav:5:8
|
5 | if !locked && open_hours || alarm {
| ^
error: Kavach has no `&&`: write `and` (spec 1.8)
--> src/main.kav:5:16
|
5 | if !locked && open_hours || alarm {
| ^^
error: Kavach has no `||`: write `or` (spec 1.8)
--> src/main.kav:5:30
|
5 | if !locked && open_hours || alarm {
| ^^kavach fix src
src/main.kav: Write `not` src/main.kav: Write `and` src/main.kav: Write `or`
kavach run
come in