问题标签 [callbyname]

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 投票
2 回答
53 浏览

html - 具有多级属性的 CallByName

我想在 VBA 中使用 CallByName 从此类网页中读取特定数据。这些网页具有不同的 html 结构。就我而言,有一个元素需要引用 2 或 3 个父节点并获取带有 or 标记的元素。见代码:

我命名的所有网页中的元素MyElem

在一个网页中,我需要以下代码:

在另一个网页我需要这个代码:

等等 ...

我想用 VBA 编写如下:

问题是 CallByName 不支持多级属性。我在这里阅读了类似的主题,但这对我的情况没有帮助。有什么想法吗?

0 投票
2 回答
276 浏览

scala - 尾递归和按名称/值调用

学习 Scala 和函数式编程。在以下尾递归阶乘实现中:

我想知道让第二个参数按值调用与按名称调用(正如我所做的那样)是否有任何好处。在第一种情况下,每个堆栈帧都承载着一个产品。在第二种情况下,如果我的理解是正确的,整个产品链将被转移到第 th 堆栈帧的情况下if ( n== 0)n所以我们仍然必须执行相同数量的乘法运算。不幸的是,这不是 a^n 形式的乘积,可以通过重复平方以 log_2n 步计算,而是每次相差 1 的项的乘积。所以我看不到任何优化最终产品的可能方法:它仍然需要 O(n) 项的乘法。

这个对吗?就复杂性而言,按值调用是否等同于按名称调用?

0 投票
2 回答
347 浏览

c - Call-by-name 和 Call-by-macro-expansion 之间的区别

假设我们有以下代码,其语言看起来很像 C。

我想定义这个程序的输出。我还没有很好地理解按名称调用和按宏扩展方法调用之间的区别。

因此,在按名称调用方法中,将 k 初始化为 0,然后f()调用函数。x 等于“k”,y 等于“A[k]”。被调用函数中的第一个命令是x++将“k”的值增加 1。因此 k 等于 1。然后 A[1] 增加,因此 A[1] 变为 7+1=8。x,y 均不受影响。最后,我们有将y++“A[k]”的值增加 1 的命令,因此它将 A[1](因为现在 k=1)的值增加 1,所以 A[1] 现在变为 8+1 =9。

然后f()打印:1,9,4,9

然后我们回到main()打印的函数:1,4,9

所以,如果我没记错的话,程序的输出是 1,9,4,9,1,4,9。

但是宏扩展调用与此方法有何不同?它有什么变化?

0 投票
0 回答
117 浏览

functional-programming - 正常顺序评估(按名称调用)是否进一步分为按值调用、按引用调用、按共享调用等?

考虑评估过程调用及其参数的不同方法。 编程语言基础

到目前为止,我们讨论的所有参数传递机制(自然参数传递、按值调用、按引用调用)都是急切的:它们总是为每个操作数找到一个值。我们现在转向一种非常不同的参数传递形式,称为惰性求值。

我对此的理解是:

  • 在应用顺序评估(eager evaluation)中,我们区分了按值调用、按引用调用、按共享调用等。

  • 在正常顺序求值(惰性求值、按名称调用)中,按值调用、按引用调用、按共享调用等之间是否还有类似的区别?

0 投票
2 回答
244 浏览

haskell - Haskell Semantics 按名称/值调用

我是 Haskell 的新手,我有一个问题

g(h 2)假设语义是 call-by-name 和 call-by-value的运行结果是什么?

0 投票
2 回答
110 浏览

scala - Scala 函数和按名称调用的问题

我正在尝试在此函数中循环使用按名称调用参数的第二个参数(exp)。前 3 个参数是索引、停止循环的布尔值和增量函数。当我尝试循环“hello world”10 次时,我得到一个带有 10 '()' 的输出,如测试代码中所示。我可以就这里的问题寻求帮助吗?谢谢

0 投票
1 回答
313 浏览

vbscript - 使用 VBS 执行字符串作为属性在 SAP 中设置值

我正在尝试自动化 SAP GUI 740 中的属性设置命令列表,例如,将字段的“文本”属性设置为“12345”,如下所示。

这很好用,如下所示:

也是如此:

我需要弄清楚的是如何将属性名称和值作为字符串传递这样的函数并让它设置它们。例如:

最好的选择似乎是 CallByName,如下所示,但我收到类型不匹配错误。

和错误:

我不知道这是否是一个简单的语法问题,或者我是否完全错误地使用了它。我也没有投资 CallByName,所以如果有更好或更简单的方法,我完全赞成 :)

谢谢大家!

0 投票
1 回答
210 浏览

unit-testing - Scalamock:使用参数模拟按名称调用函数

在下面的代码片段中,我需要确保BinaryConverter#intToStr调用它。

我尝试使用 onCall 产品,但得到Converter$$Lambda$132/182531396 cannot be cast to scala.Function1. 虽然,将无参数函数转换为 Function0 时,相同的代码仍然有效,.asInstanceOf[() => String]()

0 投票
0 回答
39 浏览

java - 通过字符串名称从另一个类调用另一个类中的函数

问题

我正在尝试通过名称(作为字符串)调用类中的方法。

mso对象有方法exampleMethodName

这有效 - 我可以通过字符串名称成功调用函数。

但是,当我将相同的代码块放入一个类中时,它会失败。例外:

示例代码

为什么会这样?我该如何解决?

0 投票
0 回答
13 浏览

lazy-evaluation - 计算在按名称调用和按需要调用下执行的中缀操作

提供的功能(从惰性函数式编程语言的角度来看):

提供评估,我如何合理地争论函数调用了多少添加:

fun1(1)
fun2(1)

会在call-by-needand下产生call-by-name吗?当我试图解决这个问题时,借助两种评估技术的知识,我会说:

call-by-need:
fun1(1)= n + 1
fun2(1)= n + 1

call-by-name:
fun1(1)= 2n + 1
fun2(1)= 2n + 1

但是任何人都可以验证上述值是否正确吗?两者之间的主要区别(根据我的理解)是call-by-name每次使用变量时都需要重新评估它们。情况并非如此call-by-need。比如一个例子:

fun1(1)= 2n + 1\

其中 n = 1 计算为:

let n1= n0+ n0
let x = ( n0+ n0) +n1
总共进行了 3 次加法,因为n1右边的值是由左边的加法 ( n0+ n0) 推断出来的。

我什至可以说,call-by-need直到fun1(1)and的结果fun2(1)实际上是needed.

谁能帮我指出正确的方向?我似乎无法弄清楚评估技术如何影响通过对上面的函数调用(以及抽象地对任何其他函数调用)执行的中缀操作(+ 或任何其他操作)的数量。

编辑:我的重点是了解哪里出了问题,如果我的结果不正确,以及我如何继续了解如何更准确地计算它们。我还可以补充一下,这是一个练习,包括多个类似的练习——每个练习都需要了解上述内容。