이 같은 것을 할 수있는 :
import 'dart:json' as json;
main() {
var t = new Thingy();
print(t.bob());
print(t.jim());
print(json.stringify(t));
}
class Thingy {
Thingy() {
_map[const Symbol('bob')] = "blah";
_map[const Symbol('jim')] = "oi";
}
final Map<Symbol, String> _map = new Map<Symbol, String>();
noSuchMethod(Invocation invocation) {
return _map[invocation.memberName];
}
toJson() => {
'bob': _map[const Symbol('bob')],
'jim': _map[const Symbol('jim')]};
}
업데이트 - 동적 예 :
import 'dart:json' as json;
main() {
var t = new Thingy();
t.add('bob', 'blah');
t.add('jim', 42);
print(t.bob());
print(t.jim());
print(json.stringify(t));
}
class Thingy {
final Map<Symbol, String> _keys = new Map<Symbol, String>();
final Map<Symbol, dynamic> _values = new Map<Symbol, dynamic>();
add(String key, dynamic value) {
_keys[new Symbol(key)] = key;
_values[new Symbol(key)] = value;
}
noSuchMethod(Invocation invocation) {
return _values[invocation.memberName];
}
toJson() {
var map = new Map<String, dynamic>();
_keys.forEach((symbol, name) => map[name] = _values[symbol]);
return map;
}
}
은 매우 안정적인 실제 이름 형식이거나 새로운 버전의 다트가 나올 때마다 내 코드를 업데이트하는 것에 대해 걱정해야합니까? – jz87
형식이 지정되었는지는 모르겠지만 [언어 사양] (https://www.dartlang.org/docs/spec/latest/dart-language-specification.html)에는 _setter' v ='_. 그래서 나는 그것이 거의 정의되었다고 말할 것입니다. 메일 링리스트 또는 기타 SO 질문에 대해 물어보십시오 :) –