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

在Scala中_ ::是什么意思?

发布时间:2020-12-16 08:50:47 所属栏目:安全 来源:网络整理
导读:我正在阅读一本关于电梯的书,我遇到了一些我不太了解的东西:_ :: object permanent_link extends MappedString(this,150){ override def validations = valMinLen(3,"Link URL must be at least 5 characters") _ :: super.validations} 我找不到任何提示,
我正在阅读一本关于电梯的书,我遇到了一些我不太了解的东西:_ ::

object permanent_link extends MappedString(this,150){
    override def validations =
    valMinLen(3,"Link URL must be at least 5 characters") _ ::
    super.validations
}

我找不到任何提示,如果有人能帮助我,我将不胜感激.

解决方法

我不知道Lift,但这是一个普遍的问题.首先,::是Scala cons运算符:

scala> 1 :: 2 :: List(3,4)
res0: List[Int] = List(1,2,3,4)

这意味着super.validations是某种序列和valMinLen(3,“链接URL必须至少为5个字符”)_是该列表中的单个值.

从上下文看,很明显,在重写的验证方法中,它们调用超级版本并在开头添加一些额外的验证.

这个额外的验证是通过调用valMinLen()创建的.但是,这个额外的调用不会返回与验证列表类型匹配的元素 – 而是一个函数.我们明确地说(通过添加_后缀`)我们想要预先添加一个函数本身,而不是前面的函数值,而不是该函数的返回值.

代码片段胜过千言万语:

scala> def f = 3
f: Int

scala> def g = 4
g: Int

scala> val listOfInts = List(f,g)
listOfInts: List[Int] = List(3,4)

scala> val listOfFunctions = List(f _,g _)
listOfFunctions: List[() => Int] = List(<function0>,<function0>)

比较listOfInts和listOfFunctions的类型.我相信f _语法在Scala世界中被称为部分应用函数.

(编辑:李大同)

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

    推荐文章
      热点阅读