0aaa1c5fc8
Change-Id: Id6a784ca45d702785aaa662b9d5d9ac6b6c46b43 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/123621 Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
71 lines
2.6 KiB
Dart
71 lines
2.6 KiB
Dart
// Copyright (c) 2011, 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.
|
|
|
|
part of dart.core;
|
|
|
|
/**
|
|
* The base class for all function types.
|
|
*
|
|
* A function value, or an instance of a class with a "call" method, is a
|
|
* subtype of a function type, and as such, a subtype of [Function].
|
|
*/
|
|
abstract class Function {
|
|
/**
|
|
* Dynamically call [function] with the specified arguments.
|
|
*
|
|
* Acts the same as calling function with positional arguments
|
|
* corresponding to the elements of [positionalArguments] and
|
|
* named arguments corresponding to the elements of [namedArguments].
|
|
*
|
|
* This includes giving the same errors if [function] isn't callable or
|
|
* if it expects different parameters.
|
|
*
|
|
* Example:
|
|
* ```
|
|
* Function.apply(foo, [1,2,3], {#f: 4, #g: 5});
|
|
* ```
|
|
*
|
|
* gives exactly the same result as
|
|
* ```
|
|
* foo(1, 2, 3, f: 4, g: 5).
|
|
* ```
|
|
*
|
|
* If [positionalArguments] is null, it's considered an empty list.
|
|
* If [namedArguments] is omitted or null, it is considered an empty map.
|
|
*/
|
|
external static apply(Function function, List<dynamic>? positionalArguments,
|
|
[Map<Symbol, dynamic>? namedArguments]);
|
|
|
|
/**
|
|
* Returns a hash code value that is compatible with `operator==`.
|
|
*/
|
|
int get hashCode;
|
|
|
|
/**
|
|
* Test whether another object is equal to this function.
|
|
*
|
|
* Function objects are only equal to other function objects
|
|
* (an object satisfying `object is Function`),
|
|
* and never to non-function objects.
|
|
*
|
|
* Some function objects are considered equal by `==`
|
|
* because they are recognized as representing the "same function":
|
|
*
|
|
* - It is the same object. Static and top-level functions are compile time
|
|
* constants when used as values, so referring to the same function twice
|
|
* always give the same object, as does referring to a local function
|
|
* declaration twice in the same scope where it was declared.
|
|
* - if they refer to the same member method extracted from the same object.
|
|
* Repeatedly extracting an instance method of an object as a function value
|
|
* gives equal, but not necessarily identical, function values.
|
|
*
|
|
* Different evaluations of function literals
|
|
* never give rise to equal function objects.
|
|
* Each time a function literal is evaluated,
|
|
* it creates a new function value that is not equal to any other function
|
|
* value, not even ones created by the same expression.
|
|
*/
|
|
bool operator ==(Object other);
|
|
}
|