我正在浏览一个我想贡献的新项目的代码,作者已经使用三重括号定义了很多方法,就像这样:
deinitialize() {{{
this.destroyed = true;
$(window).off("resize", this.resize as () => void);
if (this.resize_debounce) {
clearTimeout(this.resize_debounce);
this.resize_debounce = null;
}
this.svg.remove();
this.container = null;
}}}
我从来没有见过三个括号(括号?胡子?)用这种方式。我唯一的经验是与聚合物之类的东西进行数据绑定。这是怎么回事
该项目是用typescript编写的(我也没有这方面的经验),这个特定的位在一个.tsx文件中。它还使用React,这可能是不相关的。这个功能是来自其中之一,还是我从未见过的原生JS?
源代码在这里:https://github.com/online-go/online-go.com/blob/devel/src/components/RatingsChart/RatingsChart.tsx
另外,我很抱歉,如果这不是明确的措辞。我不太确定这些是从哪里来的,我也不太熟悉这个项目中使用的语言或FW。感谢您的耐心等待!(如果需要,还可以编辑:))
3条答案
按热度按时间tp5buhyn1#
在JavaScript语句中,你可以根据自己的喜好使用任意数量的 * 对 * 匹配大括号:
行为没有任何变化 *。在react中也没有什么特别的东西会对使用这段代码产生任何影响。
我最好的猜测是链接代码的开发人员遵循了某种react组件的约定。但据我所知,它不是一个广泛的社区使用,否则我们会看到更多的这种情况。
u1ehiz5o2#
简单地说,这是因为如果在函数内部的object中有另一对括号,则很难阅读。
例如(它们比这更难阅读):
它只是使它更容易(特别是当有多个原型或对象时)。多括号使其更容易。您可以使用},}},}}},}}},}}}},...让它更容易阅读,就像这样:
你只能对函数执行,而不能对对象执行。这也适用于括号;您可以使用',“,”',““,”“,”“”,“”",...之后的一切!所述多括号能够将其它括号放入其中而不关闭:
在示例中,它们用于允许单括号作为撇号,双括号作为语音括号。
快乐编码!
xtupzzrd3#
我经常使用这种{{}}}的方式来分割代码,也用于构建任何文本文件。这是一个被广泛接受的折叠约定,也是
vim
编辑器的默认foldmarker。请参阅GNU/Linux发行版中的
/usr/share/vim/vim82/doc/usr_28.txt
文件(当然,安装了vim
)。简单地说,折叠是一种“折叠”和“展开”文件部分的方法。它可以通过使用缩进级别(
:set foldmethod=indent
)或使用特定标记(set foldmethod=marker
)来完成。默认标记是三个括号{{{,}}}
。自定义标记可以像这样手动指定::set foldmarker={,}
(例如,这对C代码很有用)。查看此文档:https://www.vimfromscratch.com/articles/vim-folding
也在这里检查答案:https://unix.stackexchange.com/questions/141097/how-to-enable-and-use-code-folding-in-vim
请注意,当使用特定的折叠标记时,通常建议在注解中包含这些标记。
例如,这是一个“vim-foldable”python代码:
这里可能看起来很丑;但是当使用vim编辑它时,它允许在一个折叠中看到类,并且只有两个方法展开,而看不到构造函数。这可以根据任何人的喜好进行调整。
在Javascript中,显然没有必要注解掉这些折叠标记。