123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- var global := 0
- func test():
- var a = 0
- var b = 1
- match a:
- 0 when b == 0:
- print("does not run" if true else "")
- 0 when b == 1:
- print("guards work")
- _:
- print("does not run")
- match a:
- var a_bind when b == 0:
- prints("a is", a_bind, "and b is 0")
- var a_bind when b == 1:
- prints("a is", a_bind, "and b is 1")
- _:
- print("does not run")
- match a:
- var a_bind when a_bind < 0:
- print("a is less than zero")
- var a_bind when a_bind == 0:
- print("a is equal to zero")
- _:
- print("a is more than zero")
- match [1, 2, 3]:
- [1, 2, var element] when element == 0:
- print("does not run")
- [1, 2, var element] when element == 3:
- print("3rd element is 3")
- match a:
- _ when b == 0:
- print("does not run")
- _ when b == 1:
- print("works with wildcard too.")
- _:
- print("does not run")
- match a:
- 0, 1 when b == 0:
- print("does not run")
- 0, 1 when b == 1:
- print("guard with multiple patterns")
- _:
- print("does not run")
- match a:
- 0 when b == 0:
- print("does not run")
- 0:
- print("regular pattern after guard mismatch")
- match a:
- 1 when side_effect():
- print("should not run the side effect call")
- 0 when side_effect():
- print("will run the side effect call, but not this")
- _:
- assert(global == 1)
- print("side effect only ran once")
- func side_effect():
- print("side effect")
- global += 1
- return false
|