【问题标题】:How to write function to compare two sets?如何编写比较两组的函数?
【发布时间】:2013-03-11 06:48:48
【问题描述】:

我有类型 Set = Int => Boolean; , 和函数子集/如何获得两组 A 和 B 并比较它们?
我写的像

def union(a: Set, b: Set): Set = {
  (i: Int) => a(i).&(b(i))==b(i) 
  }

编译成功,但是当我运行代码时它在输出中显示<function1>

【问题讨论】:

  • 不清楚你要归档什么,但你会得到这样的输出,因为你有函数union,它返回一个函数(它以 i: Int 作为输入)。跨度>
  • 我认为这是Scala函数式编程课程中的一个问题。

标签: scala


【解决方案1】:

我猜您正在做一些练习,可能来自 Odersky 教授的 Coursera 课程“Scala 中的函数式编程原理”。如果不是,您不应该重新定义内置名称,例如 Set

无论如何,回答你的问题,选择将“一组整数”表示为一个返回true的函数,如果提供给它的Int是集合的成员,你的集合一个函数(一个Int参数返回一个Boolean)。

Scala 在将函数编译为 JVM 字节码时不会记录任何源代码,因此它无法以任何有意义的方式生成代表该函数的 String,而是仅生成 <functionN> 其中 N是函数的数量(参数数量)。

【讨论】:

    【解决方案2】:

    我可以推断您的Set 不是一个类,而是Int=>Boolean. 的类型别名

    由于=>FunctionN 的语法糖,SetFunction1[Int,Boolean] 的类型别名

    【讨论】:

      猜你喜欢
      • 2023-02-03
      • 2018-10-09
      • 2021-07-26
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      相关资源
      最近更新 更多