【问题标题】:Type alias in Scala [closed]在 Scala 中键入别名 [关闭]
【发布时间】:2021-10-25 10:03:49
【问题描述】:

我有一个任务,我应该实现一些按类型别名操作的函数:

   /**
   * We represent a set by its characteristic function, i.e.
   * its `contains` predicate.
   */
  override type FunSet = Int => Boolean 

但我不明白这是什么意思。我们如何通过它的特性来表示一个集合?即,它是如何工作的?我有一个检查元素是否存在的函数:

   /**
   * Indicates whether a set contains a given element.
   */
  def contains(s: FunSet, elem: Int): Boolean = s(elem)

我不知道它检查什么?例如,我需要实现创建单音集的函数:

   /**
   * Returns the set of the one given element.
   */
  def singletonSet(elem: Int): FunSet = elem == ???

但我不知道我应该创建什么?

【问题讨论】:

  • 我想你误会了。什么都没有保存。
  • 它检查什么?
  • 我认为这是在Functions 方面实施Sets 的一部分,对吗?如果是这样,您可能希望编辑您的问题以包含更多详细信息并更清楚地说明您的问题,因为现在它根本没有意义,并且根本不清楚您的问题与类型别名有什么关系。跨度>
  • 对不起,我对问题的解释不清楚,我编辑了我的问题。
  • SO 不是要求你做作业的地方 ;) 如果你不明白这个练习,也许可以问问你的队友或老师?

标签: scala types type-alias


【解决方案1】:

您的问题令人困惑和困惑。 singletonType 是什么,类型别名与单例有什么关系?

type FunType = Int => Boolean

FunType 现在只是更长的正确类型的(轻微)缩写。 (它本身就是Function1[Int,Boolean] 类型的一种方便形式。)

您可以创建该类型的值。

val isOdd: FunType = _ % 2 > 0

您可以创建接收该类型值的方法。

def applyTest(n: Int, f: FunType):Boolean = f(n)
applyTest(77, isOdd)  //true

等等。它只是一个和其他类型一样的类型。

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 2018-02-14
    相关资源
    最近更新 更多