blob: 2970222dd84c8bf59c669390046442fa774058d2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
Method syntax
=============
Definition syntax
-----------------
The parser needs to set a flag if it an identifier is followed by a dot.
1.
func SomeThing.get_number() -> int
func var SomeThing.set_number(int num)
2.
func SomeThing.get_number() -> int
func SomeThing.set_number(int num) var
3.
func SomeThing.get_number() -> int
func SomeThing var.set_number(int num)
4.
func SomeThing.get_number() -> int
func SomeThing.var set_number(int num)
5.
func SomeThing.get_number() -> int
func SomeThing.set_number var(int num)
5.
func SomeThing.get_number() -> int
func SomeThing.set_number!(int num)
Call syntax
-----------
s.set_number(1)
s var.set_number(1)
s.var set_number(1)
s.set_number var(1)
s.set_number!(1)
The ! syntax is the by far most user-friendly.
But how to extend it to other qualifiers?
aliased, threaded, writeonly etc.
Perhaps something like this:
func SomeThing.set_number!(int num)
func SomeThing.set_number threaded(int num)
func SomeThing.set_number threaded!(int num)
s.set_number!(1)
s.set_number threaded(1)
s.set_number threaded!(1)
Things to decide
----------------
* Should the "this" parameter always be passed by reference?
It is rarely any meaningful to pass it by value.
* At least "var"-less value receivers should be disallowed.
|