,.2}.` 部分在 J 脚本中的作用是什么?-6ren"> ,.2}.` 部分在 J 脚本中的作用是什么?-最近我萌生了使用J作为脚本语言的绝妙想法(否则我永远不会在任何地方使用J)。来自 jsoftware 的示例页面按 promise 工作。此处供引用 sumsquares 的代码: #!/home/f-6ren">
gpt4 book ai didi

j - `0".>,.2}.` 部分在 J 脚本中的作用是什么?

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

最近我萌生了使用J作为脚本语言的绝妙想法(否则我永远不会在任何地方使用J)。来自 jsoftware 的示例页面按 promise 工作。此处供引用 sumsquares 的代码:

#!/home/fred/j807/bin/jconsole
echo +/*:0".>,.2}.ARGV
exit''

据我所知,ARGV 是一个包含内容的盒装列表(以 1 2 3 作为参数):

┌────────────────────────────┬────────────────┬─┬─┬─┐
│/home/fred/j807/bin/jconsole│./sumsquares.ijs│1│2│3│
└────────────────────────────┴────────────────┴─┴─┴─┘

但是,当在 J REPL 中执行时,它失败了(我希望这不仅仅是我这边的一些愚蠢错误):

    +/*:0".>,.2}. ('/home/fred/j807/bin/jconsole';'./sumsquares.ijs';1;2;3)
|domain error
| +/*:0 ".>,.2}.('/home/fred/j807/bin/jconsole';'./sumsquares.ijs';1;2;3)

我想,我可以破译它的一部分:

  • 2}.:将两个字符串元素斩首
  • >:拆箱/打开元素

但其余的有点神秘。谁能给我解释一下 0".>,.2}. 中发生了什么?尤其是 0.

还有:
为什么它在脚本中有效但在 REPL 中无效?

  • 在脚本中工作:echo +/*:0".>,.2}.ARGV
  • 不在 REPL 中工作:+/*:0".>,.2}.('/home/fred/j807/bin/jconsole';'./sumsquares.ijs';1;2; 3)

修改后的版本以相反的方式工作:

  • 不适用于脚本:echo +/*:@:>2}.ARGV
  • 在 REPL 中工作:+/*:@:>2}.('/home/fred/j807/bin/jconsole';'./sumsquares.ijs';1;2;3)

最佳答案

shell 命令行将参数作为字符串 传递。当 jconsole 接收到控制权时,ARGV 是一个装箱的字符串数组,其中一些看起来像数字。 p>

因此,在您上面的示例中,ARGV 中装箱数组的最后三个元素是字符串:'1' '2' '3', 不是数字 1、2、3。

在 REPL 中,当给出这样的表达式时:

'sumsquares';1;2;3

结果是一个装箱数组,其中包含一个字符串,后跟三个数字 (不是 字符串)

表达式0".y 叫做Numbers,它的作用是将数组y 的元素从字符串 转换为数字,替换错误的数字 0。但如果数组包含非字符串,则会发生域错误

查看这些示例:

   0".'123'
123
0".'1.23'
1.23
0".'1.23.4'
0
0".'abc'
0
0".123
|domain error
| 0 ".123

因此,在预期为 字符串 的地方混合使用数字 会导致您感到困惑。

最后,正确运行的 REPL 行是:

   +/*:0".>,.2}. ('/home/fred/j807/bin/jconsole';'./sumsquares.ijs';'1';'2';'3')
14

关于j - `0".>,.2}.` 部分在 J 脚本中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57457658/

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