Javascript I';我很难阅读文档
我一直在阅读文档,但当我看到方法或函数时,我会看到类似的内容Javascript I';我很难阅读文档,javascript,python,Javascript,Python,我一直在阅读文档,但当我看到方法或函数时,我会看到类似的内容 str.count(sub[, start[, end]]) emitter.emit(eventName[, ...args]) 我不知道什么是括号,什么是需要参数,什么是可选的 这段代码来自python文档,我也看到了括号和其他东西 我想要的是: 这个图案的名字是什么 如何理解它 因为我经常看到这个模式,实际上我喜欢它,但不理解它,我想用它来记录我未来的代码。对于字符串,返回其中指定子字符串不相交的出现次数 sub-应计算其出
str.count(sub[, start[, end]])
emitter.emit(eventName[, ...args])
我不知道什么是括号,什么是需要参数,什么是可选的
这段代码来自python文档,我也看到了括号和其他东西
我想要的是:
因为我经常看到这个模式,实际上我喜欢它,但不理解它,我想用它来记录我未来的代码。对于
字符串
,返回其中指定子字符串不相交的出现次数
sub
-应计算其出现次数的子字符串。start=0
-行中开始计算子字符串出现次数的位置。end=None
-行中完成子字符串出现次数计算的位置
eventName <string> | <symbol>
... args <Any>
Returns: <boolean>
eventName|
... args
返回:
按注册顺序同步调用为eventName命名的event注册的每个侦听器,并将提供的参数传递给每个侦听器
如果事件有侦听器,则返回true
,否则返回false
str.count(sub[, start[, end]])
emitter.emit(eventName[, ...args])
[]表示可选参数的列表。括号中的内容是参数
对于第一个示例:
str.count(sub[,start[,end]])
文档显示:str.count(sub[,start[,end]])
。()
(因此sub
、start
和end
)中的每个变量都是参数
让我们从一个简单的例子开始。想象一下文档只允许两个参数,如:str.count(sub,start)
。这里的问题是start
是可选的!如果用户希望从字符串开头以外的其他位置开始搜索,则只需将其包括在内
解决方法是在[]
中始终包含可选的参数。这意味着我们的新文档是:str.count(sub[,start])
逗号位于[]
中的原因是,您几乎可以想到“删除”[]
中的所有内容。如果逗号在外部,比如:str.count(sub,[start])
并且您删除了[]
中的所有内容,那么它看起来像:str.count(sub,)
,我们可以看到它是错误的
第一份文件,进一步解释
这就是你看到的有趣的逗号[]
背后的原因。但是“为什么会有像[,[]]
?”这样的东西”这个问题仍然存在
答案是:因为一些可选参数依赖于其他参数。在这种情况下,只有使用了start
参数,才能使用end
参数。如果我们尝试了前面的规则,并将start
和end
放在同一个[]
中,那么我们得到:str.count(sub[,start,end])
这是错误的,因为它表明我们只能同时使用两个可选参数或一个参数,因为如果我们删除[]
我们会得到:str.count(sub)
。这里没有中间人
为了告诉我们的用户这一点,我们将第二个[]
放在第一个参数中,这样第二个可选参数只有在第一个参数被使用时才可用。因此,如果我们只想使用start
可选参数,我们将保留第一个[]
,并删除第二个[]
(位于第一个参数内),这意味着str.count(sub[,start[,end]])
变为str count(sub,start)
。我们只删除了最内部的[]
使用这个新的[,[]]
系统,这也意味着我们不能只使用end
参数,因为要删除start
我们必须删除外部[]
,但这也会删除内部[]
,然后删除end
第一份文件,进一步解释
“但如果我们想使用两者的任意组合,该怎么办?”你不想。如果我们这样做:str.count(sub[,start][,end])
这意味着我们可以有start
和end
的任意组合
这会破坏一切,因为如果我们只使用end
参数,就无法判断它是start
还是end
!如果我们使用str.count(sub[,start][,end])
,我们不知道str.count(sub,5)
是否意味着我们想要