问题标签 [rakudo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raku - 取消绑定或取消定义 raku 中的变量
在阅读了 Raku 文档后,我发现这个只是为了取消定义一个变量。我相信在 Raku 中,分配和绑定之间存在差异。
定义和取消定义标量很容易。
当变量被绑定时,这是不可能的。
对于数组或哈希,我可以清空它,但变量仍然是定义的。
对于函数,使用 定义函数时sub
,不能取消定义,但可以使用匿名函数。
那么赋值和绑定有什么区别呢?
如何取消定义变量?
raku - 使用 rakubrew 在其他 rakudo 版本中安装模块
使用 rakubrew 升级 rakudo 版本时,更改版本非常容易,但我想知道是否可以将 raku 模块从旧版本导入到新版本。doign zef 自动安装:
更新:
但是之后:
所以我需要安装我目前使用的所有模块:
rakubrew build-zef zef install Sparrow6 zef install Linenoise
因此存在任何文件 .zef 或 .rakubrew 或检查以自动维护此模块的东西
regex - Raku 正则表达式:如何在前瞻中使用捕获组
如何在前瞻断言中使用捕获组?
这段代码:
返回:
但我期待也能捕捉到'b'。
有没有办法这样做?
我不想将 'b' 留在前瞻之外,因为我不希望 'b' 成为比赛的一部分。
有没有办法捕获'b'但仍将其留在比赛之外?
笔记:
我尝试使用 Raku 的捕获标记,如下所示:
但这似乎不像我预期的那样工作,因为即使“b”被留在比赛之外,正则表达式已经处理了“b”。而且我也不想被处理。
例如:
file - Smooth Operator: Rename a file while writing to it
In Linux (probably also in Windows/OSX) if we open a file to write and while writing to it we rename it, the raku process goes smooth and keeps writing to the file as it should.
But how can we find the new name (path) of the file while the renaming happens?
IO::Notification is NOT the way to go because it gives no other information but only the general description:
Is there a way to do it?
regex - 为什么我使用这些 Raku 正则表达式会得到不同的回溯?
我意外地回溯+
了 Raku 正则表达式的量词。
在这个正则表达式中:
我得到了预期的结果:
也就是说,(贪婪)+
量词获取所有字母,然后条件失败。之后,它通过释放最后一个得到的字母开始回溯,直到条件评估为真。
但是,当我将量词放在捕获组之外时,回溯的工作方式似乎不同:
结果:
这种行为是预期的吗?如果是这样:为什么它们的工作方式不同?是否可以模仿第一个正则表达式但仍将量词保留在捕获组之外?
笔记:
使用惰性量词“解决”问题......这是预期的,因为差异似乎发生在回溯中,而惰性量词不会发生这种情况。
但是出于性能原因,我宁愿使用贪婪的量词(这个问题中的例子是一个简化)。
arrays - Raku 列表加法运算符“Z+”“失败”,除非强制使用列表之一
我很难理解为什么 zip-addZ+
运算符在某些情况下不起作用。
我有一些我想总结的 2 元素列表。
无论我使用列表还是数组,这些都按预期工作:
现在我们将做同样的事情,但我将使用存储在其他地方的值更改正确的操作数。在这种情况下,我有一个列表数组:
这给出了意想不到的(至少对我来说:))结果(5)
。
有几种方法可以解决这个问题。
第一个是强制得到的元素是一个列表:
另一种是将@foo
定义更改为列表而不是数组(通过is List
或绑定:=
值)
为什么第一个案例不起作用?
raku - 如何将超算子与非标量的标量一起使用?
我想做一个集合的哈希。好吧,SetHashes,因为它们需要是可变的。
事实上,我想用同一个 SetHash 的多个相同副本来初始化我的 Hash。
我有一个包含新哈希键的数组:@keys
而且我的 SetHash 已经在一个标量变量中初始化:$set
我正在寻找一种干净的方法来初始化哈希。
这有效:
(括号是优先级所必需的;没有它们,分配到%hash
是for
循环体的一部分。我可以将其更改为非后缀 for 循环或进行其他几个小的更改以获得相同的结果不同的方式,但这不是我在这里感兴趣的。)
相反,我有点希望我可以使用 Raku 的一个漂亮的超级操作员,可能是这样的:
当$set
是一个简单的字符串或数字,但一个 SetHash?
很高兴知道,但我不希望它以任何顺序超过 RHS。这就是为什么我使用了超操作的右指向版本:所以它会根据需要复制 RHS 以将其与 LHS 匹配。在这种表达方式中,有没有办法说“哟,Raku,把它当作一个标量。不,真的。”?
我尝试了一个显式的 Scalar 包装器(这会使值更难获得,但这是一个实验):
这给了我这样的信息:
因此,它显然已经递归到左侧的列表中并找到了一个键,并试图将其映射到右侧具有 4 个元素的集合。这就是我想要的 - 映射到集合的键。但相反,它将它映射到集合的元素,并且超级操作员为这种大小组合指出了错误的方式。
那么为什么它会在右边递归呢?我认为标量容器会阻止这种情况。文档说它可以防止扁平化;这个递归怎么没有变平?有什么区别?
错误消息说我正在使用的超级操作器的版本是“非 dwimmy”,这可以解释为什么它实际上并没有按照我的意思做,但是可能有一个甚至更少的 dwimmy 版本让我变得更加明确的?我的大脑仍然没有很好地与 Raku 的工作方式保持一致,以便能够可靠地告诉 WIM。
regex - Raku 正则表达式:如何在lookbehinds 中使用捕获组
如何在后向断言中使用捕获组?
我尝试使用与此答案相同的公式。但这似乎不适用于lookbehinds。
从概念上讲,这就是我想要做的。
我知道这可以在没有后视的情况下轻松实现,但暂时忽略它:)
为此,我尝试了以下选项:
使用:var
语法:
使用code block
定义外部变量的语法:
似乎问题在于lookbehind
在“代码块/:my $var”之前执行,因此对于后视树来说变量是空的。
有没有办法在lookbehinds中使用捕获组?
raku - 标量泥浆?
据我(和文档)所知,slurpies 只能与数组或哈希参数一起使用。但是,我最近打错了语法并输入了看起来像是标量 slurpy 的语法。令我惊讶的是,这并没有导致语法错误。经过一些实验,我确定以下都是允许的:
但是我看不到这个语法做了什么(如果有的话)。发生什么了?这是一个记录不足的功能吗?导致无效语法不引发错误的错误?完全是别的东西吗?