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

Tuesday, March 27, 2012

Overloading, what do'esw it mean? mitä se tarkoittaa, DART ym. kielet

Like most dynamically-typed languages, Dart doesn't support overloading....
Overloading Dart Operators for Great Evil

Constructor and function/method overloading, in computer science, a type of polymorphism where different functions with the same name are invoked based on the data types of the parameters passed
Operator overloading, a form of functional or method overloading where the action being overloaded is an operator, such as + or -

It allows you to provide an intuitive interface to users of your class, plus makes it possible for templates to work equally well with classes and built-in/intrinsic types.
Operator overloading allows C/C++ operators to have user-defined meanings on user-defined types (classes). Overloaded operators are syntactic sugar for function calls...

Ja tähän Dart-kielestä esimerkkejä...

Function Overloading - General Dart Discussion | Google Groups
Oct 30, 2011 ... I'm progamming complex object and I am a little dissapointed with some aspect like it haven't got Methods Overloading. I think here could be ...
Constructor overloading - General Dart Discussion | Google Groups
Feb 12, 2012 ... Subject: Constructor overloading ... Why Dart doesn't allow to overloadconstructors. I have to define ... Subject: Re: Constructor overloading ...
Operator Overloading: "Convert" Operator - General Dart Discussion ...
Feb 13, 2012 ... I have seen this in other languages as an overloading of the "Convert" operator. Is this possible in Dart? For example: class Material{ ... } ...

Named constructors

Like most dynamically-typed languages, Dart doesn't support overloading. With methods, this isn't much of a limitation because you can always use a different name, but constructors aren't so lucky. To alleviate that, Dart lets you define named constructors:
class Point {
  num x, y;
  Point(this.x, this.y); : x = 0, y = 0;
  Point.polar(num theta, num radius) {
    x = Math.cos(theta) * radius;
    y = Math.sin(theta) * radius;
Here our Point class has three constructors, a normal one and two named ones. You can use them like so:
var a = new Point(1, 2);
var b = new;
var c = new Point.polar(Math.PI, 4.0);
Note that we're still using new here when we invoke the named constructor. It isn't just a static method.
.     originally published in