Friday, April 20, 2012

Generics in Dart: <> merkkien käyttöä, T, E , DART:issa

This article is fully to be modified

Lisäksi DART kielessä on näitä <T>   <E>  ilmaisuja.  Muiden sulkumerkkien jälkeen ne pysähdyttävät hieman miettimään...    Miksi juuri  T   ja  E  ?
(K,V)  Tarkoittaa siis Key ja Value,  sehän on selvää.
Kokoan leikkeitä ohjeista:


If you look at the API documentation for the basic array type, List, you'll see that the type is actuallyList<E>. The <...> notation marks List as a generic (or parameterized) type—a type that can declare formal type parameters.
For example, if you intend for a list to contain only strings, you can declare it as List<String> (read that as "List of String").
Generic types can save you the trouble of creating all these interfaces. Instead, you can create a single interface that takes a type parameter:
interface Cache<T> {
  T getByKey(String key);
  setByKey(String key, T value);
In this code, T is the stand-in type. It's a placeholder that you can think of as a type that a developer will define later.
Using collection literals

Both built-in collection types are parameterized: lists and maps. Parameterized literals are just like the literals you've already seen, except that you add <type> before the opening bracket. For example:
List<String> names = <String>['Seth', 'Kathy', 'Lars'];
Map<String, String> pages = <String>{ // specify value type: String
    'index.html':'Homepage',  // (the key type is implicitly String)
    'robots.txt':'Hints for web robots',
    'humans.txt':'We are people, not machines' };

NO?  Näyttää siltä siis, että <> merkinnän sisällä on "tyyppi"...
To specify one or more types when using a constructor, put the types in angle brackets (<...>
Generic collections and the types they contain

Dart generic types are reified, which is a fancy way of saying that they carry their type information around at runtime.
= = = = = = = = = = = = = = = = = = = = = = = = =

HashMap<K, V>
LinkedHashMap<K, V>
Map<K, V>       mapping a key to a value.


SIIS:  E   T   K   V
What is this T  in <T>  ?
Interface Future<T>

A Future is used to obtain a value sometime in the future. Receivers of a Future obtain the value by passing a callback to then.


What is this   E   in <E>  ?

Typedefs can be parameterized.
typedef int Compare<T>(T a, T b);

class SortedCollection<T> {
  Compare<T> compare;

main() {
  SortedCollection<int> s = new SortedCollection<int>((a,b) => a - b);
  print( is Compare<int>);  // true
  print('a','b'));  // checked mode throws exception
dartlang  0.08

identifier (extends type)?
`<' typeParameter (`,' typeParameter)* `>'
A type parameter T may be suffixed with an extends clause that specifies
the upper bound for T.

A type parameter T may be suffixed with an extends clause that specifies
the upper bound for T.   ....

Tässäpä hieman sulattelemista...    Täydennän tekstiä vielä...
Tämä kirjoitus tuo hieman lisävalaistusta asiaan...

.published originally in

No comments:

Post a Comment