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