|
46 | 46 | return x, (i + 1, tapeidx)
|
47 | 47 | end
|
48 | 48 |
|
| 49 | +function Base.get(obj::Object, key::Symbol) |
| 50 | + for (k, v) in obj |
| 51 | + k == key && return v |
| 52 | + end |
| 53 | + throw(KeyError(key)) |
| 54 | +end |
| 55 | + |
49 | 56 | function Base.get(obj::Object, key)
|
| 57 | + k2 = Base.string(key) |
| 58 | + for (k, v) in obj |
| 59 | + String(k) == k2 && return v |
| 60 | + end |
| 61 | + throw(KeyError(key)) |
| 62 | +end |
| 63 | + |
| 64 | +function Base.get(obj::Object, ::Type{T}, key::Symbol)::T where {T} |
50 | 65 | for (k, v) in obj
|
51 | 66 | k == key && return v
|
52 | 67 | end
|
53 | 68 | throw(KeyError(key))
|
54 | 69 | end
|
55 | 70 |
|
56 | 71 | function Base.get(obj::Object, ::Type{T}, key)::T where {T}
|
| 72 | + k2 = Base.string(key) |
57 | 73 | for (k, v) in obj
|
58 |
| - k == key && return v |
| 74 | + String(k) == k2 && return v |
59 | 75 | end
|
60 | 76 | throw(KeyError(key))
|
61 | 77 | end
|
62 | 78 |
|
| 79 | +function Base.get(obj::Object, key::Symbol, default) |
| 80 | + for (k, v) in obj |
| 81 | + k == key && return v |
| 82 | + end |
| 83 | + return default |
| 84 | +end |
| 85 | + |
63 | 86 | function Base.get(obj::Object, key, default)
|
| 87 | + k2 = Base.string(key) |
| 88 | + for (k, v) in obj |
| 89 | + String(k) == k2 && return v |
| 90 | + end |
| 91 | + return default |
| 92 | +end |
| 93 | + |
| 94 | +function Base.get(obj::Object, ::Type{T}, key::Symbol, default::T)::T where {T} |
64 | 95 | for (k, v) in obj
|
65 | 96 | k == key && return v
|
66 | 97 | end
|
67 | 98 | return default
|
68 | 99 | end
|
69 | 100 |
|
70 | 101 | function Base.get(obj::Object, ::Type{T}, key, default::T)::T where {T}
|
| 102 | + k2 = Base.string(key) |
71 | 103 | for (k, v) in obj
|
72 |
| - k == key && return v |
| 104 | + String(k) == k2 && return v |
73 | 105 | end
|
74 | 106 | return default
|
75 | 107 | end
|
76 | 108 |
|
77 |
| -function Base.get(default::Base.Callable, obj::Object, key) |
| 109 | +function Base.get(default::Base.Callable, obj::Object, key::Symbol) |
78 | 110 | for (k, v) in obj
|
79 | 111 | k == key && return v
|
80 | 112 | end
|
81 | 113 | return default()
|
82 | 114 | end
|
83 | 115 |
|
| 116 | +function Base.get(default::Base.Callable, obj::Object, key) |
| 117 | + k2 = Base.string(key) |
| 118 | + for (k, v) in obj |
| 119 | + String(k) == k2 && return v |
| 120 | + end |
| 121 | + return default() |
| 122 | +end |
| 123 | + |
84 | 124 | Base.propertynames(obj::Object) = collect(keys(obj))
|
85 | 125 |
|
86 | 126 | Base.getproperty(obj::Object, prop::Symbol) = get(obj, prop)
|
|
0 commit comments