diff --git a/dart.html.markdown b/dart.html.markdown index 740c2b3d..ca0361d0 100644 --- a/dart.html.markdown +++ b/dart.html.markdown @@ -160,6 +160,8 @@ class Example7Class { example7() { Example7Class.sayItFromClass(); new Example7Class().sayItFromInstance(); + //the new keyword is optional, so this is the same + Example7Class().sayItFromInstance(); } /// Dart supports Generics. @@ -175,7 +177,7 @@ example7() { /// K,V - Key Value(used for Map) class GenericExample{ void printType(){ - print("$T") + print("$T"); } // methods can also have generics genericMethod(){ @@ -200,8 +202,8 @@ class GenericExample{ const example8List = ["Example8 const array"]; const example8Map = {"someKey": "Example8 const map"}; /// Declare List or Maps as Objects. - List explicitList = new List(); - Map explicitMaps = new Map(); +List explicitList = []; //new List() is now +Map explicitMaps = {}; explicitList.add("SomeArray"); example8() { @@ -214,8 +216,8 @@ example8() { /// So when you assign an existing list to a new variable. /// Instead of List, it becomes an Iterable var iterableExplicitList = explicitList; -print(iterableExplicitList) // ("SomeArray"); "[]" becomes "()" -var newExplicitLists = explicitList.toList() // Converts Iterable to List +print(iterableExplicitList); // ("SomeArray"); "[]" becomes "()" +var newExplicitLists = explicitList.toList(); // Converts Iterable to List /// Loops in Dart take the form of standard for () {} or while () {} loops, /// slightly more modern for (.. in ..) {}, or functional callbacks with many @@ -308,13 +310,13 @@ example13() { /// Boolean expressions support implicit conversions and dynamic type example14() { - var a = true; + bool? a = true; if (a) { print("true, a is $a"); } - a = false; - if (a) { - print("true, a is $a"); + a = null; + if (a ?? false) { //if null count as false + print("true, a is $a"); } else { print("false, a is $a"); /// runs here } @@ -416,39 +418,6 @@ example20() { print("Example20 \$ interpolation ${s1} or $s2 works."); } -/// Optional types allow for the annotation of APIs and come to the aid of -/// IDEs so the IDEs can better refactor, auto-complete and check for -/// errors. So far we haven't declared any types and the programs have -/// worked just fine. In fact, types are disregarded during runtime. -/// Types can even be wrong and the program will still be given the -/// benefit of the doubt and be run as though the types didn't matter. -/// There's a runtime parameter that checks for type errors which is -/// the checked mode, which is said to be useful during development time, -/// but which is also slower because of the extra checking and is thus -/// avoided during deployment runtime. -class Example21 { - List _names; - Example21() { - _names = ["a", "b"]; - } - List get names => _names; - set names(List list) { - _names = list; - } - - int get length => _names.length; - void add(String name) { - _names.add(name); - } -} - -void example21() { - Example21 o = new Example21(); - o.add("c"); - print("Example21 names '${o.names}' and length '${o.length}'"); - o.names = ["d", "e"]; - print("Example21 names '${o.names}' and length '${o.length}'"); -} /// Class inheritance takes the form of class name extends AnotherClassName {}. class Example22A { @@ -470,7 +439,7 @@ example22() { /// Mixin is mostly used to share methods with distant classes, so the /// single inheritance doesn't get in the way of reusable code. /// Mixins follow the "with" statement during the class declaration. -class Example23A {} +mixin class Example23A {} class Example23Utils { addTwo(n1, n2) { @@ -496,14 +465,14 @@ example23() { /// super-parent's constructor. class Example24A { var _value; - Example24A({value: "someValue"}) { + Example24A({value = "someValue"}) { _value = value; } get value => _value; } class Example24B extends Example24A { - Example24B({value: "someOtherValue"}) : super(value: value); + Example24B({value = "someOtherValue"}) : super(value: value); } example24() { @@ -606,7 +575,7 @@ example29() { } rand() { - v = new DM.Random().nextInt(50); + v = new math.Random().nextInt(50); return v; } @@ -631,7 +600,7 @@ example30() { top = int.parse("123") ~/ n2, bottom = 0; top = top ~/ 6; - gn = new DM.Random().nextInt(top + 1); /// +1 because nextInt top is exclusive + gn = new math.Random().nextInt(top + 1); /// +1 because nextInt top is exclusive print("Example30 Guess a number between 0 and ${top}"); guessNumber(i) { if (n == gn) { @@ -709,7 +678,7 @@ main() { example6, example7, example8, example9, example10, example11, example12, example13, example14, example15, example16, example17, example18, example19, example20, - example21, example22, example23, example24, example25, + example22, example23, example24, example25, example26, example27, example28, example29, example30 // Adding this comment stops the dart formatter from putting all items on a new line ].forEach((ef) => ef());