假设我在Rust库中定义自己的类型,如下所示:
struct Date {
year: u16,
month: u8,
day: u8
}
impl Date {
fn new(y: u16, m: u8, d: u8) -> Date {
// Do some validation here first
Date { year: y, month: m, day: d }
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法要求用户使用Date::new构造函数?换句话说,我可以以某种方式禁止用户使用默认构造函数创建自己的Date结构,如下所示:
let d = Date { 2017, 7, 10 };
Run Code Online (Sandbox Code Playgroud)
我问,因为如果你不能强迫开发人员在设置结构的成员之前通过一系列验证来运行他们的参数,这似乎是一个有害的缺陷.(虽然,也许在Rust中我应该使用其他一些模式,比如在使用数据时验证数据而不是在创建数据时;可以随意评论.)
JSON Web 令牌 (JWT) 分为三个 Base-64 编码部分,并通过句点(“.”)连接。前两部分对 JSON 对象进行编码,第一部分是详细说明签名和哈希算法的标头,第二部分包含断言。第三个是二进制数据,即签名本身。
我的问题是:为什么 JSON Web Token 被分成三个独立的部分?将它们编码为单个 JSON 对象似乎会使解析它们变得更加容易,如下所示(为了简洁起见,下面的示例不完整):
{
"header": {
"alg": "rsa"
},
"assertions": {
"iss": "2019-10-09T12:34:56Z"
},
"sig": "qoewrhgoqiethgio3n5h325ijh3=="
}
Run Code Online (Sandbox Code Playgroud)
换句话说:为什么 JWT 的设计者不将 JWT 的所有部分放入单个 JSON 对象中,如上所示?
Material-UI (React) 版本 4+ 中的aFormControlLabel和a 之间有什么区别(目的和/或行为)InputLabel?
我知道使用React.memo()记住组件/组件的一部分通常是一个很好的做法,但我发现自己记住了使用 React Hook Form 实现的表单上的每个字段。由于 RHF 使用不受控制的组件,因此这似乎不是问题:组件似乎更新得很好,而且我确实看到了性能改进。
尽管如此,我的直觉告诉我,记住几乎所有内容都是一种不好的做法。这是一个不好的做法吗?还有其他方法可以节省渲染吗?
我有一个方法应该接受一个数字数组或接受可变数量的数字参数(可变参数)。在我使用的大多数语言中,当你创建一个方法/函数可变参数时,它接受两者,但似乎在 TypeScript 中,你不能。当我将这个特定函数设为可变参数时,我提供number[]编译失败的所有地方。
签名供参考(在课堂上ObjectIdentifier):
constructor(... nodes : number[]) {
Run Code Online (Sandbox Code Playgroud)
这失败了:
return new ObjectIdentifier(numbers);
Run Code Online (Sandbox Code Playgroud)
哪里numbers是类型number[]。