问题描述
在代码中的何处以及在我的 ERC20 智能合约中添加法律措辞的正确方法是什么?
我看过一些示例,其中将它保存在一个变量上,然后在函数体中使用 let solutionToSearch = "B2B";
let industryToSearch = " ";
let integrationToSearch = "C5";
const filterTheArrayFunc = () => {
let answerArrayA = [];
let answerArrayB = [];
let answerArrayC = [];
for (let i = 0; i < arrays.length; i++) {
if (solutionToSearch === "" || solutionToSearch === " ") {
answerArrayA = arrays;
} else {
for (let y = 0; y < arrays[i].solutionType.split(",").length; y++) {
if (arrays[i].solutionType.split(",")[y].trim() === solutionToSearch)
answerArrayA.push(arrays[i]);
}
}
}
for (let i = 0; i < answerArrayA.length; i++) {
if (industryToSearch === "" || industryToSearch === " ") {
answerArrayB = answerArrayA;
} else {
if (answerArrayA[i].industry === industryToSearch) {
answerArrayB.push(answerArrayA[i]);
}
}
}
for (let i = 0; i < answerArrayB.length; i++) {
if (integrationToSearch === "" || integrationToSearch === " ") {
answerArrayC = answerArrayB;
} else {
if (answerArrayB[i].integration === integrationToSearch) {
answerArrayC.push(answerArrayB[i]);
}
}
}
console.log(answerArrayC);
};
filterTheArrayFunc();
引用该变量值。
即
<img src="my.jpg" alt="image not found">
最后两个函数是做什么的,它会被执行还是只是保存在内存中?
这是正确的做法吗?
如果我要保存包含所有法律措辞的大量文本字符串。在变量上,我可以使用反引号将它们保存在模板文字上以利用字符串内的多个换行符等吗?
解决方法
我想逐点回答你的问题:
-
最后两个函数在执行或保存在内存中时到底在做什么?
这些函数基本上覆盖了这些变量的值,在您的情况下,默认情况下在合约的最开始时初始化。由于我们在这些函数上设置了 onlyOwner() 修饰符,因此只有所有者才能通过显式调用这些方法并提供必要的 Gas 成本来更改这些变量。 -
这是正确的做法吗?有点,是的
-
有没有更好的方法来解决这个问题? 方法可以修改为查看限制
-
开发人员通常在代码的哪个位置添加此类信息? 如果您希望该值是一个常量,即不应在整个合同过程中更改它,请添加常量修饰符。另外,你可以加上make the variable immutable,这意味着可以避免初始常量值字符串,并且变量在第一次运行时只能用一个常量值初始化,然后该值不能改变。
-
如果我要保存包含所有法律措辞的大量文本字符串。在变量上,我可以使用反引号将它们保存在模板文字上以利用字符串内的多个换行符等吗? 是的你可以。请参考此处:https://docs.soliditylang.org/en/v0.8.0/internals/layout_in_storage.html?highlight=string
希望能帮到你!