tomo/test/tables.tm

88 lines
1.3 KiB
Plaintext
Raw Normal View History

2024-04-28 11:58:55 -07:00
func main():
>> t := {"one":1, "two":2; default=999}
= {"one":1, "two":2; default=999}
2024-04-12 10:09:31 -07:00
>> t["one"]
= 1
>> t["two"]
= 2
>> t["???"]
= 999
t_str := ""
2024-04-28 11:58:55 -07:00
for k,v in t:
t_str ++= "({k}:{v})"
2024-04-12 10:09:31 -07:00
>> t_str
= "(one:1)(two:2)"
2024-04-12 10:09:31 -07:00
>> #t
= 2
>> t.default
2024-04-30 10:18:47 -07:00
= @%999?
2024-04-12 10:09:31 -07:00
>> t.fallback
= !{Text:Int}
2024-04-12 10:09:31 -07:00
>> t.keys
= ["one", "two"]
>> t.values
= [1, 2]
>> t2 := {"three":3; fallback=t}
= {"three":3; fallback={"one":1, "two":2; default=999}}
2024-04-12 10:09:31 -07:00
>> t2["one"]
= 1
>> t2["three"]
= 3
>> t2["???"]
= 999
>> #t2
= 1
>> t2.default
= !Int
>> t2.fallback
2024-04-30 10:18:47 -07:00
= @%{"one":1, "two":2; default=999}?
2024-04-12 10:09:31 -07:00
t2_str := ""
2024-04-28 11:58:55 -07:00
for k,v in t2:
t2_str ++= "({k}:{v})"
2024-04-12 10:09:31 -07:00
>> t2_str
= "(three:3)"
>> {i:10*i for i in 5}
= {1:10, 2:20, 3:30, 4:40, 5:50}
>> {i:10*i for i in 5 if i mod 2 != 0}
= {1:10, 3:30, 5:50}
>> {x:10*x for x in y if x > 1 for y in [3, 4, 5] if y < 5}
= {2:20, 3:30, 4:40}
>> t3 := {1:10, 2:20, 3:30}
>> t3:remove(3)
>> t3
= {1:10, 2:20}
2024-08-10 12:15:38 -07:00
do:
>> plain := {1:10, 2:20, 3:30}
>> plain:get(2, -999)
= 20
>> plain:get(456, -999)
= -999
>> plain:has(2)
= yes
>> plain:has(456)
= no
>> fallback := {4:40; fallback=plain}
>> fallback:has(1)
= yes
>> fallback:get(1, -999)
= 10
>> default := {5:50; default=0}
>> default:has(28273)
= yes
>> default:get(28273, -999)
= 0