callbyname

    1热度

    2回答

    我想创建一个函数与下面的签名元组: def myFunction[T](functionWithName: (String, => T)): T ,这样我可以调用它,例如,像这样:val x = myFunction("abc" -> 4 * 3)。但是,Tuple不接受名称参数,所以上面的签名是无效的。 通过this answer的启发,我想下面的隐式转换: implicit class B

    2热度

    1回答

    我正在参加Coursera课程的函数式编程课程,并且在某些时候他们讨论了按值分类和按名称评估技术之间的区别。他们的一些点混淆了我,他们说: 这两种技术都降低到相同的最终值,只要: 减少的表达由纯函数和 既评估终止 这似乎是一个演算定理。 你能解释一下“纯粹函数的简化表达式”是什么意思吗?

    3热度

    1回答

    doSmth(() => s)为什么不能编译? 为什么其余的代码输出“值”?有没有办法调用第二个函数(使用名称参数)? object Test { def main (args: Array[String]){ lazy val s: String = "" doSmth(s) doSmth("") doSmth(() => s) }

    3热度

    2回答

    我是新来的Scala语言,所以我会很感激,如果有人可以解释我这个代码片段: object C { def main(args: Array[String]) = { measure("Scala"){ println("Hello Back") } } def measure(x: String)(y: => Unit){

    4热度

    1回答

    我有一个使用更大的索引在过程中创建大型数据结构的scala过程。因为我想要一次完成并且不会在复杂的优先解决方案中变得难以理解,所以在使用表达式初始化的结果中使用lazy vals,该表达式可能无法在创建时评估为正确值(或者任何其他值)该组件,但是一旦整个构建过程完成,就会这样做。这意味着最终结果的每个组成部分都有对整个索引的闭包的合成引用,并且可能只要它们中的任何一个仍在内存中,我的索引就不能被垃

    1热度

    1回答

    我有一个可怕的问题。我建立了许多属性的怪异类,其中也有数组属性。 ,如果我想引用这些与CALLBYNAME,它不会工作,让我们来看一个例子: public sub whatsoever() Dim alfaarray() As Variant Dim g As Integer Dim obj As Object ReDim alfaarray(4)

    2热度

    1回答

    对于DSL,我想介绍一个基本上调用Vector.fill的扩展方法,例如dup。 import scala.collection.immutable.{IndexedSeq => Vec} implicit final class Dup[A](private val in: A) extends AnyVal { def dup(n: Int): Vec[A] = Vector.f

    1热度

    1回答

    我知道这个话题已经讨论过好几次了,但还是有些东西还不清楚。 我读过这个问题applicative-order/call-by-value and normal-order/call-by-name differences和有件事我会澄清一劳永逸: 呼叫按姓名 由于正常秩序,但没有减少在里面抽象执行。例如λx。(λx.x)x根据此策略处于正常形式,尽管它包含redex(λx.x)x。 在名称调用中,

    -1热度

    1回答

    我一直在为此工作了很多,但仍然无法让我的代码正常运行。 我有一个叫做Contact的类,它有一个只读属性Address。 Address类具有像Street和City这样的属性。现在我想将联系人指定的街道是这样的: CallByName(contact, "Address.Street", CallType.Set, new_street) 但我得到一个错误说“Address.Street”不

    2热度

    1回答

    我在玩具语言中有这行代码。 print函数获取参数列表并打印这些参数。 print(a, (a := 5, a)) 会不会有输出一个区别,如果我使用的call-by-值或调用的名称?如果是这样,那么产出会是什么。 可以假定a被初始化为0。