gpt4 book ai didi

rascal - 从函数返回值和语句

转载 作者:行者123 更新时间:2023-12-01 15:29:57 24 4
gpt4 key购买 nike

我想知道使用 return 语句和使用 foo() = Expression 模式定义函数之间的行为差​​异

我的理解来自:Funtions一个函数体可以是 = Expression 并且 return 要么什么都不带,要么带一个 Expression

我问的原因是,根据我对文档的理解,以下内容不起作用:

map[int,int] foo(map[int,int] env) = env[0] = 1;

它不会(导致解析错误)因为赋值是一个语句。但是,如果我稍微修改一下这个函数:

map[int,int] foo(map[int,int] env) { return env[0] = 1; }

这似乎有效。我很困惑,因为我虽然 return 应该只接受表达式。此外,从 REPL 上的尝试来看,该赋值返回一个 Value,因此能够定义分配和返回修改后的映射的函数会很好。

也许我在这里遗漏了一些东西。

最佳答案

你的理解很好。 return 语句具有一些额外的灵 active ,但显然也允许返回由选定语句类型(例如“for”和赋值)产生的值。参见 Rascal 语法中 return 语句的语法定义 here

在未来的版本中,我们可能会删除所有限制并允许在任何地方声明。

关于rascal - 从函数返回值和语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29754289/

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