- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据 this excellent explanation const
Dart 中的表达式是“深度不可变”的,这意味着内部的任何内容都不会改变,因此整个表达式将始终表示相同的东西。这对编译器很有用,因为它可以一次生成整个对象图并在每次出现这样的表达式时重新使用它,并且程序员知道这样的表达式——即使它是深度嵌套的——仍然是有用的遵循值(value)语义,不会在我背后做任何事情。
我正在使用编译器的这些优化来使用结构良好的对象模型(例如,而不是将其手动编码为位向量)并且仍然可以获得良好的性能。因为我们也可以通过使用 static final
使它们成为运行时常量来“显式散列”一些值来获得其中的一些好处。成语,问题出现了,在哪种情况下使用这两者中的哪一个是好的风格?
考虑以下示例:
enum ShaftType { RING, SUN, CARRIER }
class Shaft {
final int index;
final ShaftType type;
Shaft(this.type, this.index) {
assert((type == ShaftType.CARRIER) == (index == null));
}
const Shaft.CARRIER()
: type = ShaftType.CARRIER,
index = null;
const Shaft.RING(this.index) : type = ShaftType.RING;
const Shaft.SUN(this.index) : type = ShaftType.SUN;
}
class GearPath {
final Shaft input, output, fixed;
GearPath({this.input, this.output, this.fixed}) {
// input and output must be set
assert(null != input && null != output);
// fixed shaft can't be anything else
assert(fixed != input && fixed != output);
}
GearPath.carrierToFirstRingFixedSun(int i)
: input = const Shaft.CARRIER(),
output = const Shaft.RING(0),
fixed = new Shaft.SUN(i) {}
static final singleFixedSunUp = new GearPath(
input: const Shaft.CARRIER(),
output: const Shaft.RING(0),
fixed: const Shaft.SUN(0),
);
static final directDrive = new GearPath(
input: const Shaft.CARRIER(),
output: const Shaft.CARRIER(),
fixed: null,
);
// ...
}
Shaft(..)
和
GearStage(..)
构造函数
const
因为我想检查一些约束,但我可以提供特殊情况的构造函数(例如
Shaft.SUN(int i)
,
Shaft.CARRIER()
),它们在设计上符合这些约束(至少部分),并为用户提供这些常见值的易读简写。
const
构造函数没有参数,那么我也可以将它写成
static final
成员,就像我对
GearStage.directDrive
所做的那样.如果所有用户都引用这个静态成员而不是重新创建值,我们还可以获得共享内存和快速比较(引用同一对象)的好处。我不能将这个定义的右侧声明为 const,因为它使用了非常量构造函数,但是开发人员可以从上下文中看到这确实是一个常量值,而不是隐藏在静态字段中的全局可变单例。因此,出于实际目的,它应该与 const 构造函数一样好,对吧?
const
之间进行组合和权衡的好方法构造函数和
static final
“命名值实例”?
GearPath.carrierToFirstRingFixedSun(int i)
也作为 const 构造函数?目前我不能,因为
const Shaft.SUN(i)
投诉
i
不是恒定的。
最佳答案
Dart 2 将允许您在 const 构造函数中使用断言(只要您的条件可以计算为 const 表达式)。
然后你就可以写:
GearPath({this.input, this.output, this.fixed})
: // input and output must be set
assert(null != input && null != output),
// fixed shaft can't be anything else
assert(!identical(fixed, input) && !identical(fixed, output));
GearPath.carrierToFirstRingFixedSun(int i)
const 因为它
i
不是恒定的。
const Shaft.SUN(i)
仍然不是有效的 const 表达式,即使
i
是 const 构造函数的参数。每个
const Constructor(...)
调用仍然必须只创建一个对象,即使它出现在另一个 const 构造函数的初始值设定项列表中。
const
是你应该慎重选择的 promise ,而不仅仅是因为你可以。因此,请考虑变量的用例。如果您没有看到它在其他 const 表达式中使用,那么只需将其设为 final 即可。
关于dart - const 构造函数与静态最终规范值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989511/
我们有一个 Java 项目,每天晚上使用 TeamCity 对 Java 类进行静态分析,以查找代码中容易出现的错误。我们想告诉 TeamCity 寻找开发人员可能引入的与 == 与 .equals
Promises/A+ 这是一个开放标准,旨在让不同开发者实现的 JavaScript Promise 能够无缝衔接并应用——由前辈们制定,为其他后来者提供参考 一个 promise 所
前言 🍊缘由 Git分支管理好,走到哪里都是宝 🏀事情起因: 最近翻看博客中小伙伴评论时,发现文章【规范】看看人家Git提交描述,那叫一个规矩一条回复: 本狗亲测在我司中使用规范
使用带有不存在的命名空间的命名空间限定关键字来定义规范是否被认为是不好的做法?我想在公共(public) domain 命名空间中定义实体映射...所以为了避免在合并规范时丢失数据,我使用约定 :en
有没有办法在调用 clojure.spec.test.alpha/check 时覆盖核心谓词函数的生成器? 可以通过 s/gen 中的路径覆盖谓词生成器: (gen/generate (s/gen
以内核 rpm 为例,它允许在一个系统上同时安装多个版本。规范文件中究竟是什么允许的? 我想打包一个已经存在的具有不同安装前缀的多个版本的项目。 最佳答案 百胜 找到了让 yum 安装而不是更新的方法
我正在尝试用 C# 编写 PDF 解析器,但我遇到了一个问题,我不确定如何解释规范。 除非另有说明,否则 PDF 文档中的用户空间为 1/72 英寸(即 1pt)。 Tf 运算符提供的比例将字体从标准
我正在编写一些代码,需要能够获取两个 pdf 并将它们附加到页面级别(例如,如果它们都是 2 页文档,则有一个 4 页文档,其中所有 4 页都与原始文档相同). 在不使用库的情况下,最好的方法是什么?
是否有序言语言语法,或接近它的通常用作引用的东西?我正在使用 SWI-prolog,所以有一个适合这种风格的会很好,否则一般的 prolog 语言语法/规范也能工作。 最佳答案 自 1995 年起,P
我需要一个函数来过滤参数和构建查询。我有 4 个参数,因此如果我尝试为每个条件实现查询,我将不得不写 16 (2^4)实现 - 这不是一个好主意。 我尝试使用界面改进我的代码 Specificatio
这个 ExtGState 对象对图像做了什么: > 我有 PDF 规范,但一点也不清楚。显然,这将身份函数(什么的身份?单位矩阵?)从 [0.0 1.0] 映射到 [0.0 1.0](相同),这是没有
只是想获得有关 ePub 规范的一些帮助。toc.ncx 是否必须具有 src(即 xhtml)。我观察到 .opf 文件中也提供了相同的内容 src。 最佳答案 是的,这是强制性的,这是一个设计问题
让我们看看莱宁根项目 map 的真实示例 :global-vars : ;; Sets the values of global vars within Clojure. This example
我正在开发一个 LOB 框架,它具有 SL 和 MVC 前端、WCF 后端以及在服务器上运行的几个服务模块。我一直在查看 Spec#,看它是否对我有任何帮助。不可空类型和检查异常本身非常好,但我还没有
Promises/A+规范是最小的规范之一。因此,实现它是理解它的最佳方法。福布斯·林德赛(Forbes Lindesay)的以下回答将引导我们完成实现Promises / A +规范Basic Ja
哪个文档指定了 MySQL definer 格式? 具体来说,definer admin@% 中的 % 是什么意思(以及为什么使用这个符号)? 最佳答案 这里MySQL使用的格式定义在the MySQ
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
在 css 规范中,什么会影响更多的 inline 样式或外部 !important 外部“style.css”: #di{color: green!important;} div 文本颜色是红色还
我正在努力思考 CSS 的一些细节,我从 W3 CSS Visual Formatting Spec 9.2.2 中找到了这部分摘录。特别迟钝: Inline-level boxes that are
这个问题在这里已经有了答案: Are (non-void) self-closing tags valid in HTML5? (8 个答案) 关闭 9 年前。 在 HTML5 中你应该使用 或
我是一名优秀的程序员,十分优秀!