Chromium Code Reviews| Index: corelib/src/expando.dart |
| diff --git a/corelib/src/expando.dart b/corelib/src/expando.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..e21c5aaf071ba072d11417527eb83c37c9b4dbdf |
| --- /dev/null |
| +++ b/corelib/src/expando.dart |
| @@ -0,0 +1,38 @@ |
| +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +/** |
| + * An [Expando] allows adding new properties to objects. |
|
sra1
2012/06/12 07:10:26
It does not look like adding properties to an obje
|
| + */ |
| +interface Expando<T> default _Expando<T> { |
| + |
| + /** |
| + * The name of the this [Expando] as passed to the constructor. If |
| + * no name was passed to the constructor, the name is [null]. |
| + */ |
| + final String name; |
| + |
| + /** |
| + * Creates a new [Expando]. The optional name is only used for |
|
sra1
2012/06/12 07:10:26
'only used' - I'm confused.
If I create two const
|
| + * debugging purposes and creating two different (non-const) |
| + * [Expando]s with the same name yields two [Expando]s that work on |
| + * different properties of the objects they are used on. |
| + */ |
| + const Expando([String name]); |
| + |
| + /** |
| + * Gets the value of this [Expando]'s property on the given |
| + * object. If the object hasn't been expanded, the method returns |
| + * [null]. |
|
sra1
2012/06/12 07:10:26
Explain when the call will fail,
|
| + */ |
| + T operator [](Object object); |
| + |
| + /** |
| + * Sets the value of this [Expando]'s property on the given |
| + * object. Properties can effectively be removed again by setting |
| + * their value to null. |
| + */ |
| + void operator []=(Object object, T value); |
| + |
| +} |