加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala中的部分功能

发布时间:2020-12-16 19:01:52 所属栏目:安全 来源:网络整理
导读:我只想澄清一下 Scala中部分定义的函数.我看过文档,它表示部分函数的类型是PartialFunction [A,B],我可以定义一个部分函数,??如 val f: PartialFunction[Any,Int] = {...} 我想知道,对于A和B类,A是一个参数,而B是一个返回类型?如果我有多个接受的类型,是否
我只想澄清一下 Scala中部分定义的函数.我看过文档,它表示部分函数的类型是PartialFunction [A,B],我可以定义一个部分函数,??如

val f: PartialFunction[Any,Int] = {...}

我想知道,对于A和B类,A是一个参数,而B是一个返回类型?如果我有多个接受的类型,是否使用orElse将部分函数链接在一起?

解决方法

在函数的集合理论视图中,如果函数可以将域中的每个值映射到范围内的值,则我们说该函数是一个总函数.可能存在一些功能无法将域中某些元素映射到范围的情况;这些功能称为部分功能.

以Scala文档中的示例为部分功能:

val isEven: PartialFunction[Int,String] = {
  case x if x % 2 == 0 => x+" is even"
}

这里定义了一个部分函数,??因为它被定义为仅将偶数整数映射到字符串.因此,部分函数的输入是一个整数,输出是一个字符串.

val isOdd: PartialFunction[Int,String] = {
  case x if x % 2 == 1 => x+" is odd"
}

isOdd是类似于isEven定义的另一个部分函数,??但是对于奇数.同样,输出是一个字符串.

如果您有一个数字列表,例如:

List(1,2,3,4,5)

并将isEven部分函数应用在您将获得的列表中作为输出

List(2 is even,4 is even)

请注意,并非原始列表中的所有元素都已被部分功能映射.但是,在某些部分功能无法将域中的元素映射到范围的情况下,您可能需要应用其他函数.在这种情况下,我们使用orElse:

val numbers = sample map (isEven orElse isOdd)

现在你会得到作为输出:

List(1 is odd,2 is even,3 is odd,4 is even,5 is odd)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读