1 |
|
2 |
|
3 | #### bool() conversion
|
4 | echo "$[bool(1234)]"
|
5 | echo "$[bool(0)]"
|
6 | echo "$[bool('foo')]"
|
7 | echo "$[bool(true)]"
|
8 | echo "$[bool(1.234)]"
|
9 | echo "$[bool([])]"
|
10 | echo "$[bool({})]"
|
11 | echo "$[bool(null)]"
|
12 | echo "$[bool(len)]"
|
13 | echo "$[bool('foo'->startsWith)]"
|
14 | echo "$[bool(1..3)]"
|
15 | ## STDOUT:
|
16 | true
|
17 | false
|
18 | true
|
19 | true
|
20 | true
|
21 | false
|
22 | false
|
23 | false
|
24 | true
|
25 | true
|
26 | true
|
27 | ## END
|
28 |
|
29 | #### bool() more
|
30 | var a = bool( :|| )
|
31 | var b = bool( :|foo| )
|
32 | write $a $b
|
33 | ## STDOUT:
|
34 | false
|
35 | true
|
36 | ## END
|
37 |
|
38 |
|
39 | #### int() conversion
|
40 | echo "$[int(1234)]"
|
41 | echo "$[int('1234')]"
|
42 | echo "$[int(1.234)]"
|
43 | ## STDOUT:
|
44 | 1234
|
45 | 1234
|
46 | 1
|
47 | ## END
|
48 |
|
49 | #### int() more
|
50 | var a = int("3")
|
51 | var b = int("-35")
|
52 | write $a $b
|
53 |
|
54 | var c = int("bad")
|
55 | echo 'should not get here'
|
56 |
|
57 | ## status: 3
|
58 | ## STDOUT:
|
59 | 3
|
60 | -35
|
61 | ## END
|
62 |
|
63 | #### float() conversion
|
64 | echo "$[float(1234)]"
|
65 | echo "$[float('1.234')]"
|
66 | echo "$[float(2.345)]"
|
67 | ## STDOUT:
|
68 | 1234.0
|
69 | 1.234
|
70 | 2.345
|
71 | ## END
|
72 |
|
73 | #### float() overflow / underflow
|
74 |
|
75 | var a = float("1.2")
|
76 | var b = float("3.4")
|
77 |
|
78 | var c = float("42.1e500")
|
79 | var d = float("-42.1e500")
|
80 |
|
81 | write $a $b $c $d
|
82 | ## STDOUT:
|
83 | 1.2
|
84 | 3.4
|
85 | inf
|
86 | -inf
|
87 | ## END
|
88 |
|
89 | #### str() conversion
|
90 | echo "$[str(1234)]"
|
91 | echo "$[str(1.234)]"
|
92 | echo "$[str('foo')]"
|
93 | ## STDOUT:
|
94 | 1234
|
95 | 1.234
|
96 | foo
|
97 | ## END
|
98 |
|
99 | #### dict() converts from BashAssoc to Dict
|
100 | declare -A foo
|
101 | foo=([a]=1 [b]=2 [c]=3)
|
102 |
|
103 | json write (type(foo))
|
104 | json write (dict(foo))
|
105 | ## STDOUT:
|
106 | "BashAssoc"
|
107 | {
|
108 | "a": "1",
|
109 | "b": "2",
|
110 | "c": "3"
|
111 | }
|
112 | ## END
|
113 |
|
114 | #### dict() does shallow copy
|
115 | var d = {'a': 1}
|
116 | var d2 = d
|
117 | setvar d2['b'] = 2
|
118 | echo $['b' in d] # d2 should be an alias for d
|
119 |
|
120 | var d3 = dict(d)
|
121 | setvar d3['c'] = 3
|
122 |
|
123 | # d3 should NOT be an alias
|
124 | echo $['c' in d]
|
125 | echo $['c' in d3]
|
126 | ## STDOUT:
|
127 | true
|
128 | false
|
129 | true
|
130 | ## END
|
131 |
|
132 | #### list() does shallow copy
|
133 | var l = [1]
|
134 | var l2 = l
|
135 | call l2->append(2)
|
136 | echo $[len(l)] # d2 should be an alias for d
|
137 |
|
138 | var l3 = list(l)
|
139 | call l3->append(3)
|
140 |
|
141 | # l3 should NOT be an alias
|
142 | echo $[len(l)]
|
143 | echo $[len(l3)]
|
144 | ## STDOUT:
|
145 | 2
|
146 | 2
|
147 | 3
|
148 | ## END
|
149 |
|
150 | #### list() from Dict
|
151 | shopt -s ysh:upgrade
|
152 |
|
153 | var a = list({'a': 1, 'foo': 'bar'})
|
154 | write @a
|
155 | ## STDOUT:
|
156 | a
|
157 | foo
|
158 | ## END
|
159 |
|
160 |
|
161 | #### list() from range
|
162 | shopt -s ysh:upgrade
|
163 |
|
164 | var mylist = list(0..3)
|
165 | write @mylist
|
166 | ## STDOUT:
|
167 | 0
|
168 | 1
|
169 | 2
|
170 | ## END
|
171 |
|