小编Let*_*sgo的帖子

Dart工厂构造函数 - 它与"const"构造函数有什么不同

在Dart中,工厂构造函数需要来自编码器的更多逻辑,但与const类型不同,除非它们允许"非最终"实例变量.

它们对const构造函数的优点是什么?

谢谢你们.

编辑

下面是关于Seth Ladd的博客'Dart - 试图了解'工厂'构造函数'的价值的工厂构造函数的用法.

class Symbol {
  final String name;
  static Map<String, Symbol> _cache = new Map<String, Symbol>();

  factory Symbol(String name) {
    if (_cache.containsKey(name)) {
      return _cache[name];
    } else {
      final symbol = new Symbol._internal(name);
      _cache[name] = symbol;
      return symbol;
    }
  }

  Symbol._internal(this.name);
}


main() {
  var x = new Symbol('X');
  var alsoX = new Symbol('X');

  print(identical(x, alsoX));  // true
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,与一般的构造函数,可以实现相同的效果与微妙的差异,但相当简单.

class Symbol {
  static final Map<String, Symbol> cache = {};
  final String name;

  Symbol(name) …
Run Code Online (Sandbox Code Playgroud)

constructor factory dart

14
推荐指数
1
解决办法
5503
查看次数

关于Dart的工厂建设者

下面是关于Seth Ladd的博客' Dart - 试图了解'工厂'构造函数'的价值的工厂构造函数的用法.

class Symbol {
  final String name;
  static Map<String, Symbol> _cache = new Map<String, Symbol>();

  factory Symbol(String name) {
    if (_cache.containsKey(name)) {
      return _cache[name];
    } else {
      final symbol = new Symbol._internal(name);
      _cache[name] = symbol;
      return symbol;
    }
  }

  Symbol._internal(this.name);
}


main() {
  var x = new Symbol('X');
  var alsoX = new Symbol('X');

  print(identical(x, alsoX));  // true
}
Run Code Online (Sandbox Code Playgroud)

恕我直言,与一般的构造函数,可以实现相同的效果与微妙的差异,但相当简单.

class Symbol {
  static final Map<String, Symbol> cache = {};
  final String name;

  Symbol(name) {
    cache[name] …
Run Code Online (Sandbox Code Playgroud)

constructor factory-pattern dart

9
推荐指数
1
解决办法
2万
查看次数

Dart中动态和静态类型的区别

两个问题。首先,下面是强类型。

String msg = "Hello world.";
msg = "Hello world again.";
Run Code Online (Sandbox Code Playgroud)

而且,低于动态

var msg = "Hello world.";
msg = "Hello world again.";
Run Code Online (Sandbox Code Playgroud)

上面的两个'msg'有什么区别吗?

其次,如果我使用 'new' 关键字来启动一个变量,如下所示,

Map myMap = new Map;
Run Code Online (Sandbox Code Playgroud)

为什么要指示变量'myMap' 是一个Map 实例(Map myMap),因为'new' 关键字已经包含相同的含义?所以,是不是没关系,

myMap = new Map;
Run Code Online (Sandbox Code Playgroud)

因为 'new' 关键字已经暗示新启动的变量既是变量又是 Map 类型,我不明白为什么通常 'Map' 关键字与变量名称一起使用,甚至 'var' 也是如此。

有没有人对此有任何想法(似乎有点多余)Dart 语法?

dynamic dart

7
推荐指数
1
解决办法
1243
查看次数

Dart函数的默认返回值是多少?

即使我故意删除了'return'命令,下面的函数也能正常工作.

main() {
  add(i) => i + 2; //I intentionally deleted 'return'
  print(add(3)); //5
}
Run Code Online (Sandbox Code Playgroud)

但是,在我故意删除'return'命令后,下面的函数不起作用.

main() {
makeAdder(num addBy) {
 return (num i) {
    addBy + i; //I intentionally deleted 'return'
  }; 
}

 var add2 = makeAdder(2); 
  print(add2(3) ); //expected 5, but null.
}
Run Code Online (Sandbox Code Playgroud)

编辑澄清我的问题.

在上面的后一个函数中的最后一个句子,add2(3)不返回一个值(我期望5)但只返回null.

我的问题是为什么后一个函数的'addBy + i'与第一个函数的'add(i)=> i + 2'返回'i + 2'的事实相反.

再次编辑. 答案是"=>"为{return},而不仅仅是{}.

main() {
makeAdder(num addBy) => (num i) { return addBy + i; }; 


 var add2 = makeAdder(2); 
  print(add2(3) ); // 5
} …
Run Code Online (Sandbox Code Playgroud)

return dart

2
推荐指数
1
解决办法
888
查看次数

标签 统计

dart ×4

constructor ×2

dynamic ×1

factory ×1

factory-pattern ×1

return ×1