问题标签 [pass-by-name]

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.

0 投票
1 回答
1178 浏览

go - Go 语言中的引用类型令人困惑

我试图通过 Go 语言制作 Trie 数据结构,但不知何故它遇到了引用问题,就是这样。http://play.golang.org/p/ASSGF5Oe9R

在我放置的第二个“插入”中发生以下问题,//Problem Point

我制作containsIndex了搜索下一个链接的特里树的方法,它实际上搜索得很好。但是当我更新给定的next属性时containsIndex,它并没有影响它的母结构trie

我不明白的是我在返回时给了它引用类型containsIndex,但它仍然像“复制值”一样,为什么它不影响它的母结构(trie)?

谢谢!

0 投票
3 回答
66 浏览

scala - 通过参数确定要更改的成员

以下 Scala 代码给出了一个编译错误,指出我无法分配给 val:

简化示例:

更接近我实际用途的示例:

由于撤消/重做都非常相似,我想将公共代码提取到一个函数中,我想将源/目标对作为redoState/传递undoState,反之亦然。

有什么方法可以告诉函数应该在哪里存储一些东西?(在 C++ 中,在这种情况下我会传递一个指向成员的指针)。

0 投票
2 回答
73 浏览

scala - 在scala中按值和按名称=>一一对应

如果按值调用时

val f: (Int) => Int = {(i) => {i * i}} # f: Int => Int = <function1>
是的简写
val f: Function1[Int, Int] = {(i) => {i * i}} # f: Int => Int = <function1>

那么当按名称 调用时
val f: (=> Int) => Int = {(i) => {i * i}} # f: (=> Int) => Int = <function1>
是 ? 的简写
?什么 ?

而如果

按值调用时

val f = {(i) => {i * i}}:(Int) => Int # f: Int => Int = <function1>
是的简写
val f = {(i) => {i * i}}:Function1[Int, Int] # f: Int => Int = <function1>

那么当按名称 调用时
val f = {(i) => {i * i}}:(=>Int) => Int # f: (=> Int) => Int = <function1>
是 ? 的简写
?什么 ?

换句话说

if (Int) => IntFunction1[Int, Int]的简写

那么(=> Int) => Int? 什么 ?

谢谢 !

0 投票
1 回答
2033 浏览

parameter-passing - 名称调用和文本调用的参数传递机制的区别及示例

在 5 种类型的参数传递机制中: 1.pass-by-value 2.pass-by-reference 3.pass-by-value-result 4.pass-by-text(C 中的宏) 5.pass-by-名称(类似于延续)

我只想要最后两个之间的区别。请帮忙!

参考: http: //www.math.grin.edu/~rebelsky/Courses/CS302/99S/Outlines/outline.36.html

0 投票
0 回答
190 浏览

scala - A => => B 是什么意思?

另一个问题中,我最终得到了 type 的值A => => B。这是什么意思?

我一直被引导理解这=> A实际上不是一种类型,而是一种可以声明参数以使用按名称调用语义的方式。但如果它不是一个类型,那是什么A => => B意思呢?

0 投票
2 回答
554 浏览

python - Python 通过对象引用值传递

我正在尝试在 python 中编写一个算法来打印从(二叉树)根到每个叶子的所有路径。这是我的代码:

我在当前遍历中保留了一个节点列表,当我到达一个叶子时,我打印出这个列表。不过,我对 python 传递对象的方式有一些误解。我认为随着每个递归调用完成并从堆栈中弹出,原始curr_trav变量不会受到递归调用所做的事情的影响。但是,似乎这条线

正在改变原始列表。+=运算符返回一个新列表,而不是,.append()它实际上改变了原始对象。那么这个调用不应该只是重新分配给函数中对象的名称,而不是改变原始对象吗?当我将线路更改为类似

一切正常,但我不明白原行的问题是什么。如果我的问题不清楚,请告诉我。

0 投票
1 回答
196 浏览

scala - Scala 函数未使用大括号(大括号)按名称传递

我想通过名称传递一个函数,在它执行之前做一些事情。考虑以下示例:

调用 #1 和 #2 之间的唯一区别在于花括号。虽然第一个呼叫输出

正如预期的那样,仅在第二次通话中

被打印。

似乎使用大括号时,过程不是按名称传递而是执行。为什么在这个例子中大括号和圆括号不能互换?

0 投票
2 回答
393 浏览

c - C 中的名称传递实现

我知道 C 使用按值传递,我们可以在指针的帮助下模拟按引用传递。但是,例如,为了计算一个简单的数学表达式,我如何在 C 中实现 pass-by-name(这是一种惰性求值,但不完全是)?

0 投票
2 回答
633 浏览

c - 在 C 中通过名称实现

如何使用 C 语言中的名称传递机制计算取决于索引 i 的算术表达式 ^2 + 3i - 1 的值

9
∑ i^2 + 3i - 1
=0

通过使用按名称传递的参数调用 sum 过程

用 C 编写的按名称传递示例也可以帮助我

0 投票
1 回答
91 浏览

scala - Scala:为什么我应该将按名称参数保存为 Function0

我正在研究一个 coursera 示例,Signal但无法理解这种语法,

更新方法写为

我可以理解这expr是按名称传递的,因此仅在调用时才进行评估。但是我无法理解的是为什么myExpr表示为() => T?还有为什么作业写成myExpr = () => expr. 据我了解() => expr,表示返回的 Function0 expr。我认为我的理解byname是错误的。有人可以详细说明一下吗?

或者我们可以重写上面的语法如下,

更新方法为