OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 part of dart.core; | |
6 | |
7 /** | |
8 * The base class for all function types. | |
9 * | |
10 * A function value, or an instance of a class with a "call" method, is a | |
11 * subtype of a function type, and as such, a subtype of [Function]. | |
12 */ | |
13 abstract class Function { | |
14 /** | |
15 * Dynamically call [function] with the specified arguments. | |
16 * | |
17 * Acts the same as calling function with positional arguments | |
18 * corresponding to the elements of [positionalArguments] and | |
19 * named arguments corresponding to the elements of [namedArguments]. | |
20 * | |
21 * This includes giving the same errors if [function] isn't callable or | |
22 * if it expects different parameters. | |
23 * | |
24 * Example: | |
25 * Map<Symbol, dynamic> namedArguments = new Map<Symbol, dynamic>(); | |
26 * namedArguments[const Symbol("f")] = 4; | |
27 * namedArguments[const Symbol("g")] = 5; | |
28 * Function.apply(foo, [1,2,3], namedArguments); | |
29 * | |
30 * gives exactly the same result as | |
31 * foo(1, 2, 3, f: 4, g: 5). | |
32 * | |
33 * If [positionalArguments] is null, it's considered an empty list. | |
34 * If [namedArguments] is omitted or null, it is considered an empty map. | |
35 */ | |
36 external static apply(Function function, | |
37 List positionalArguments, | |
38 [Map<Symbol, dynamic> namedArguments]); | |
39 | |
40 /** | |
41 * Returns a hash code value that is compatible with `operator==`. | |
42 */ | |
43 int get hashCode; | |
44 | |
45 /** | |
46 * Test whether another object is equal to this function. | |
47 * | |
48 * System-created function objects are only equal to other functions. | |
49 * | |
50 * Two function objects are known to represent the same function if | |
51 * | |
52 * - It is the same object. Static and top-level functions are compile time | |
53 * constants when used as values, so referring to the same function twice | |
54 * always give the same object, | |
55 * - or if they refer to the same member method extracted from the same object
. | |
56 * Extracting a member method as a function value twice gives equal, but | |
57 * not necessarily identical, function values. | |
58 * | |
59 * Function expressions never give rise to equal function objects. Each time | |
60 * a function expression is evaluated, it creates a new closure value that | |
61 * is not known to be equal to other closures created by the same expression. | |
62 * | |
63 * Classes implementing `Function` by having a `call` method should have their | |
64 * own `operator==` and `hashCode` depending on the object. | |
65 */ | |
66 bool operator==(Object other); | |
67 } | |
OLD | NEW |