问题标签 [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 投票
1 回答
463 浏览

vb6 - Whats the wrong with passing me as parameter in CallbyName funktion under vb6?

I want to pass the sourceform, from which I use the CallByName-function. Somehow, it doesn't work in way I post it down there.

The error reported from vb6 is runtime error 450: "Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft". I think the first reason is not the problem, because the commented line above works. It seems more, that the problem has something to do with the keyword me.

Anybody some idea?

0 投票
2 回答
814 浏览

scala - 隐式类中的Scala按名称调用构造函数参数

以下代码无法编译。希望在隐式类中有一个按名称调用的构造函数参数,如此处所示,

在哪里打电话

REPL中报这个错误,

因此要问如何RichElapsed重构类。

提前致谢。

0 投票
4 回答
332 浏览

c# - C# 是否支持按结果调用?

我知道 C# 中的 3 种参数评估类型:

  1. 默认值,即按值
  2. ref,即by-ref
  3. out,它是 by-ref,但最初被认为是未初始化的并且强制分配

我的教授说 C# 也支持 by-result,他解释为:

  1. 参数必须与 LHS 兼容
  2. 创建参数的本地副本并对其进行操作
  3. 方法体处理成功后,将copy的值写回参数源

我看不出这是如何指代上述任何类型的。

0 投票
1 回答
516 浏览

scala - scala中`=> String`的类型是什么?

在 scala 中,有一些按名称调用的参数:

参数的类型是who什么?

它将scala REPL上的功能显示为:

类型还在=> String吗?它有什么名字吗?或者一些描述类型的文档?

回答提出的进一步问题

问题 1

(阅读§3.3.1(MethodTypes)的规范时)

方法类型是方法的类型,比如说我定义了一个方法hello

它的类型可以写成:=> String,对吧?虽然您可以看到 REPL 响应是:

如果我定义一个有参数的方法:

方法的类型是什么?它应该类似于String => String,但不是。因为它是一个方法类型,而且String => String是一个函数类型。

问题2

(阅读§3.3.1(MethodTypes)的规范时)

我可以这样理解:

当我调用print(goodname)时,类型goodname将转换为函数类型String => String,对吗?

但是对于无参数方法:

可以转换什么函数类型?我试过了:

但这不能编译:

错误是:

错误:类型不匹配;发现:需要字符串:()=>字符串

你能给我一个有效的例子吗?

问题 3

(阅读 §6.26.2 (MethodConversions) 的规范时)

评估转换仅在类型未应用于参数时发生。所以,对于代码:

我的问题是,当我打电话时print(myname),是否发生了转换(我的意思是Evaluation conversion)?我猜,由于类型myname是 just => String,所以可以直接传递给print

如果print方法发生了变化:

这里Evaluation conversion肯定发生了,对吧?(从=> StringString

0 投票
2 回答
298 浏览

scala - 为什么`def hello[T](f: => T) = f; hello(()=>12)` 是可编译的,但是 `def hello(f: => Int) = f; 你好(()=> 12)`不是吗?

可以编译以下代码:

但不跟随:

哪个报告错误:

为什么?

0 投票
4 回答
174 浏览

scala - 在 Scala 中,按名称参数调用的函数与将另一个函数作为参数的函数不同吗?

说,首先,我有这个功能:

接着:

当我调用它时:

我得到这个结果:

如果我也有这个功能:

我称之为:

我得到相同的结果:

那么,它们有什么不同吗?除了有或没有括号的区别吗?

如果他们没有不同?那么为什么我们有这个术语的名称呢?

0 投票
1 回答
52 浏览

scala - callbyname 参数是否必须在函数调用中用大括号括起来?

在 coursera 课程函数响应式编程第 3 周第 4 课中,Erik Meijer 为 Future 实现了一个重试函数,它将重试计算给定的次数。他指定block为 call_by_name 参数,因为 Future 应该在每次重试时评估,而不仅仅是一次。

我的问题是:由于block已经是 call_by_name 参数,是否有必要在调用它时将其包装到一个块中,或者仅仅是出于可读性原因?

同样的问题fallbackTo

0 投票
4 回答
5151 浏览

scala - Scala案例类禁止按名称调用参数?

场景:
我想实现一个无限列表:

问题:
错误是call-by-name不允许的。

我听说这是因为val.orvar不允许使用构造函数参数call-by-name。例如:

但相比之下,普通的构造函数参数仍然是val,尽管如此private。例如:


所以问题

  • 问题真的是关于valvar吗?
    • 如果是这样,因为点call-by-name是推迟计算。为什么不能推迟计算(或初始化)valvar
  • 如何绕过case class实现无限列表的限制?
0 投票
2 回答
679 浏览

vba - CallByName 语法

我想处理收到的邮件。

我的代码有一个冗长的条件语句,用于确定每封传入电子邮件所属的类别。

根据此条件语句的结果,代码应该读取 MailItem 对象的相应属性。

我想使用 CallByName 函数来实现这一点。

其中 'itm' 是 MailItem 对象,'PAN_Source' 变量包含字符串,它引用来自 'itm' 的特定属性。

例如,如果收到的邮件有附件,那么“PAN_Source”的值会是“Attachments.Item(1).DisplayName”。我希望 CallByName(itm, PAN_Source, VbGet) 返回 itm.Attachments.Item(1).DisplayName

代码只是在这个阶段停止执行。

0 投票
1 回答
767 浏览

parameter-passing - 按值调用、名称/引用、ML 中的需要

我正在准备期末考试,这里有一个练习题。

问题询问结果

在以下参数传递技术下:

  1. 按值调用
  2. 叫名字
  3. 需要时来电。

在我看来,按值调用的答案是 8。但是,我相信按名称调用的答案也是 8,但我希望它会有所不同。我认为是8的原因:

  • y := (!y)+1 将 y 取消引用为 1,加 1,然后将 y 设置为 2
  • 第 3 行中的 !y 用作 f 的参数,并且由于它正在被取消引用,因此它作为值而不是作为引用传递(这可能是我出错的地方?)
  • 函数调用返回 6,但没有设置 y,因为 y 是作为上一步中的值传入的
  • 将 6 添加到 y 的取消引用值,即 2。
  • 这返回 8

这是正确的答案吗,如果不是,有人可以指出我哪里出错了吗?另外,有人可以向我解释一下在这种情况下需要调用如何工作吗?

非常感谢。