Dart 您可以在类中创建帮助器函数而不实例化该类的对象吗?

Dart 您可以在类中创建帮助器函数而不实例化该类的对象吗?,dart,Dart,我有一个类,它有一个实例化对象的函数,但我知道其他语言在类中有一些辅助函数,它们是公共的,而不显式定义对象 DART语言网站似乎没有真正解决这个问题。在一个简单的例子中,它可能类似于拥有一个Point类,然后在其中拥有一个jsondecoder,它可能有一些用途,而不需要包含其他库 class Point { int x, y; Point(this.x, this.y); Point fromMap(HashMap<String, int> pt){ retu

我有一个类,它有一个实例化对象的函数,但我知道其他语言在类中有一些辅助函数,它们是公共的,而不显式定义对象

DART语言网站似乎没有真正解决这个问题。在一个简单的例子中,它可能类似于拥有一个Point类,然后在其中拥有一个jsondecoder,它可能有一些用途,而不需要包含其他库

class Point {
  int x, y;
  Point(this.x, this.y);

  Point fromMap(HashMap<String, int> pt){
    return new Point(pt["x"]||null, pt["y"]||null);
  }
}

我真的没有看到任何关于何时翻阅类以正确公开这些类的示例。

查找静态修饰符:
static Point from map(…)
如果Dart有这样的功能。

Dart允许在类上定义静态成员。就你而言:

类点{
int x,y;
点(这个.x,这个.y);
来自地图的静态点(地图点){
返回新点(pt[“x”]、pt[“y”]);
}
}
值得注意的是,您还可以使用命名构造函数和/或工厂构造函数:

类点{
int x,y;
点(这个.x,这个.y);
//与新点一起使用。fromMap(pt)
Point.fromMap(Map pt):这个(pt[“x”],pt[“y”]);
//与新点一起使用。从地图2(pt)
工厂点。从地图2(地图点)=>新点(点[“x”],点[“y”]);
}

给定的示例可能不是最好的,因为期望的结果是一个新的
点。正如Alexandre在回答中所说,命名构造函数是本例中的首选解决方案

也许更好的例子(但仍然有点人为)是:

library Points;

class Point {

  ...

  /// Return true if data in pt is valid [Point] data, false otherwise. 
  bool isValidData(HashMap<String, int> pt) { ... }
}
库点;
类点{
...
///如果pt中的数据是有效的[点]数据,则返回true,否则返回false。
bool-isValidData(HashMap-pt){…}
}
在没有第一类函数的语言中(例如Java),静态方法是合适的。Dart也支持这一点

class Point {

  ...

  /// Return true if data in pt is valid [Point] data, false otherwise. 
  static bool isValidData(HashMap<String, int> pt) { ... }
}
类点{
...
///如果pt中的数据是有效的[点]数据,则返回true,否则返回false。
静态bool-isValidData(HashMap-pt){…}
}
由于Dart具有一流的函数,因此在库中定义的函数可能是更好的选择

library Points;

bool isValidPointData(HashMap<String, int> pt) { ... }

class Point {
  ...
}
库点;
bool isValidPointData(HashMap pt){…}
类点{
...
}
library Points;

bool isValidPointData(HashMap<String, int> pt) { ... }

class Point {
  ...
}