gpt4 book ai didi

function - 范围(2,5)和范围(2; 5)之间的区别

转载 作者:行者123 更新时间:2023-12-04 01:11:02 25 4
gpt4 key购买 nike

模板

范围(2;5)

制作:

2
3
4

不是很有趣,因为这在手册中有解释。然而对于命令式程序员来说只是时间问题,他会错误地用逗号分隔参数(实际上我看错了手册,所以这是我的第一次尝试),并尝试模板:

range(2, 5)

产生惊喜:

0
1
0
1
2
3
4

那是什么?它是如何定义/解释的?

最佳答案

“逗号”运算符(如 2,5 中所示)生成一个流。所以 2,5 发出两个整数,这就是为什么 [2,5] 的计算结果为两个整数的数组。

一般而言,如果 E/1 已使用等同于 def E($x): 的形式定义(即,作为“常规”函数),然后 E(a,b) 发出流 E(a),然后是流 E(b)

事实上 range/1 已被定义为“常规函数”。

非常规函数

这是一个非常规函数的例子:

# Emit a single JSON object ("bow" is short for "bag of words")
def bow(stream):
reduce stream as $word ({}; .[($word|tostring)] += 1);

请注意,这里的函数参数 (stream) 被传递给 reduce,它当然以特殊方式处理它的第一个参数。

由于 def E($x): 等同于 def E(x): x as $x,定义 bow

def bow($s): reduce $s as $word ({}; .[($word|tostring)] += 1);

将具有完全不同(且无用)的语义。

关于function - 范围(2,5)和范围(2; 5)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64827742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com