1 |
# spec/ysh-methods |
2 |
|
3 |
## our_shell: ysh |
4 |
## oils_failures_allowed: 0 |
5 |
|
6 |
#### Str->startswith |
7 |
= "abc"->startswith("") |
8 |
= "abc"->startswith("a") |
9 |
= "abc"->startswith("z") |
10 |
## status: 0 |
11 |
## STDOUT: |
12 |
(Bool) True |
13 |
(Bool) True |
14 |
(Bool) False |
15 |
## END |
16 |
|
17 |
#### Str->startswith, no args |
18 |
= "abc"->startswith() |
19 |
## status: 3 |
20 |
|
21 |
#### Str->startswith, too many args |
22 |
= "abc"->startswith("extra", "arg") |
23 |
## status: 3 |
24 |
|
25 |
#### Missing method (Str->doesNotExist()) |
26 |
= "abc"->doesNotExist() |
27 |
## status: 3 |
28 |
|
29 |
#### Dict->keys() |
30 |
var en2fr = {} |
31 |
setvar en2fr["hello"] = "bonjour" |
32 |
setvar en2fr["friend"] = "ami" |
33 |
setvar en2fr["cat"] = "chat" |
34 |
= en2fr->keys() |
35 |
## status: 0 |
36 |
## STDOUT: |
37 |
(List) ['hello', 'friend', 'cat'] |
38 |
## END |
39 |
|
40 |
#### Seperation of -> attr and () calling |
41 |
const check = "abc"->startswith |
42 |
= check("a") |
43 |
## status: 0 |
44 |
## STDOUT: |
45 |
(Bool) True |
46 |
## END |
47 |
|
48 |
#### Bound methods, receiver value/reference semantics |
49 |
var is_a_ref = { "foo": "bar" } |
50 |
const f = is_a_ref->keys |
51 |
= f() |
52 |
setvar is_a_ref["baz"] = 42 |
53 |
= f() |
54 |
|
55 |
var is_a_val = "abc" |
56 |
const g = is_a_val->startswith |
57 |
= g("a") |
58 |
setvar is_a_val = "xyz" |
59 |
= g("a") |
60 |
## status: 0 |
61 |
## STDOUT: |
62 |
(List) ['foo'] |
63 |
(List) ['foo', 'baz'] |
64 |
(Bool) True |
65 |
(Bool) True |
66 |
## END |