Dart样式指南建议使用https://www.dartlang.org/articles/style-guide/#do-use-constructors-instead-of-static-methods-to-create-instances,因为“Dart中的命名构造函数和工厂构造函数为您提供了其他语言中静态方法的所有灵活性,同时仍然允许调用站点显示为常规的构造函数调用”。
那么,是否有技术原因将int.parse()和double.parse()声明为静态方法而不是工厂构造函数?
更普遍地说,在Dart中选择在静态(工厂)方法上编写工厂构造函数的指南是什么?
发布于 2014-01-27 21:25:07
在谷歌搜索了一段时间之后,我确实找到了一个官方解释:链接到小组讨论。
为了存档,这里引用了链接中引用的文本:
我想让它成为一个构造函数,但它不适合int值或双值值。 我认为“解析”是一个实用程序函数,而不是构造函数,这可能是因为int和double实际上没有构造函数。你不创建一个整数,你就会发现它。 另外,目前检查字符串是否为数字文字的唯一方法是调用解析并查看它是否抛出(但我对此并不完全满意!),而且我不喜欢除了编程错误之外任何东西都会抛出的构造函数。 而且你不必在它前面写“新”,这样做没有什么特别的好处。 没有单一的硬理由使它显然不是构造函数,而是一堆小的问题,使我更喜欢它作为一个静态的函数。
我的“表演目的”理论到此为止。哦,好吧。
https://stackoverflow.com/questions/21389202
复制相似问题