- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
foldRight[B](B)
如何从 scaladoc 匹配实际调用 foldRight(0)
args 是字符串表示形式的整数数组
val elems = args map Integer.parseInt
elems.foldRight(0) (_ + _)
scala.Iterable.foldRight[B](B)((A, B) => B) : B
Combines the elements of this list together using the binary function f, from right to left, and starting with the value z.
@note Will not terminate for infinite-sized collections.
@return f(a0, f(a1, f(..., f(an, z)...))) if the list is [a0, a1, ..., an].
最佳答案
如Steve表示,“...”只是省略号,表示未显示的可变数量的参数。
让我们转到 Scaladoc,并逐步显示此内容:
def foldRight[B](z: B)(op: (B, A) ⇒ B): B
A
?在
Iterable
中定义类(或为其定义的任何其他类):
trait Iterable[+A] extends AnyRef // Scala 2.7
trait Iterable[+A] extends Traversable[A] with GenericTraversableTemplate[A, Iterable[A][A]] with IterableLike[A, Iterable[A]] // scala 2.8
A
是集合的类型。在您的示例中,
A
将代表
Int
:
val elems = args map Integer.parseInt
[B]
.那是一个类型参数。基本上,以下两个调用实际上是相同的,但第一个调用具有编译器推断的类型参数:
elems.foldRight(0) (_ + _)
elems.foldRight[Int](0) (_ + _)
0L
而不是
0
,然后
B
将代表
Long
反而。如果您通过了
""
而不是
0
,然后
B
将代表
String
.你可以试试这些,它们都行。
B
是
Int
和
z
是
0
.请注意,声明中有两组括号。这意味着该函数是柯里化(Currying)的。它接收两组参数,以及类型参数(
[B]
)。这意味着您可以省略第二组参数,这将返回一个函数,该函数采用第二组参数并返回预期结果。例如:
val elemsFolder: ((Int, Int) => Int) => Int = elems.foldRight(0)
elemsFolder(_ + _)
op
,预计类型为
(B, A) => B
.或者,换句话说,一个接收两个参数的函数——第一个与
z
的类型相同。 ,第二个与集合的类型相同——并返回与第一个参数相同类型的结果。由于
A
和
B
是
Int
,它将是
(Int, Int) => Int
的函数.如果你通过了
""
, 那么它将是
(String, Int) => String
类型的函数.
B
,这意味着
z
的类型是什么,这将是
foldRight
返回的类型.
foldRight
工作,它有点像这样:
def foldRight[B](z: B)(op: (B, A) => B): B = {
var acc: B = z
var it = this.reverse.elements // this.reverse.iterator on Scala 2.8
while (!it.isEmpty) {
acc = op(acc, it.next)
}
return acc
}
关于scala - 如何解释scaladoc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420959/
我有一个顶级特征,其中包含许多类和特征,例如: trait Trees { self: Types => trait Tree trait IdentifiedTree extends Tre
为什么Scaladoc中的一些方法描述以[use case]开头? 示例:scala.collection.immutable.StringOps.++ 它只是将来要替换的占位符吗? 最佳答案 它们是
我有一个 Color companion 对象,它包含一些有用的颜色,我想按照以下方式记录它们: object Color { /** (.3, .3, .3, 1) */ val darkG
Ruby 有一个名为 ri 的程序,您可以在其中键入“ri Array”并获取其联机帮助页。 scaladoc 有类似的东西吗? 最佳答案 现在 Scaladoc 网络“应用程序”正在通过索引进行增强
看着 http://www.scala-sbt.org/release/docs/Howto/scaladoc.html有一些示例可以提供 scaladoc 选项,例如 -groups和 -impli
我有两个类,调用他们Foo和 Fizz . Foo使用名为 expand 的注释宏为它的一些方法创建别名(实际实现比创建别名多一点,但简单的版本仍然会出现以下问题)。为简单起见,假设 expand宏简
我很好奇如何记录根包,显示为 scala-doc 中的第一页汇编。可以以某种方式创建一个引用根包的包对象,还是有任何配置选项?对此事的描述有些含糊。 最佳答案 scaladoc 似乎有一个名为 -do
在 ScalaDoc 中添加代码示例的标准约定(或标记)是什么?下面代码中的示例,我想提供编码示例来演示它的用法: /** * Adds a filter on DB Table Query if
我最近一直在试验 Scala,我注意到当我需要查找函数或类时,我必须访问网站或导航到本地文档。 有没有办法从解释器内部读取 Scaladoc? 也许像 help()在 Python 中。 最佳答案 S
我在使用重载时遇到了 ScalaDoc 不接受方法链接的问题。 一个独立的例子:文件 project/build.properties : sbt.version=0.13.2 文件 build.sb
我需要从我的 scaladoc 链接到 github 上的源代码。我用 sbt 的 doc 构建这些文档任务。 有两个问题 - 首先,我不喜欢为我的 .scala 创建几个嵌套的空目录。文件,所以我通
有什么方法可以让 IntelliJ 在边缘处包装 scaladoc? 基本上,我想要这个: /** * This is a method description that is long enoug
我正在尝试在 SBT 中配置 Scaladoc,特别是标题、输出目录和类路径。 我设法通过将以下内容添加到 build.sbt 来定义标题: scalacOptions in (Compile, do
我希望 Scaladoc 为以下代码片段生成类型层次结构图: trait A trait B extends A 但是当我执行 scaladoc .scala没有显示类型层次结构——也没有在 A 中也
我想在数学 Scala 代码的 Scaladoc 文档中输入数学公式。在 Java 中,我找到了一个名为 LatexTaglet 的库,它可以通过在 Latex 中编写公式来为 Javadoc 做到这
Scala API里面有很多地方,尤其是在方法签名错误的集合中。 例如,Map 的 scaladoc 签名. flatMap说 def flatMap[B](f: (A) ⇒ GenTraversab
我是否有可能通过 scala 文档在全局范围内搜索类、特征或对象中的方法?示例:我有一个方法名称,但我不知道它属于哪个类,因此我可以在某些 scaladoc 搜索中键入它,它会向我显示包含给定名称的方
我正在寻求有关 Maven 的 scala-maven-plugin 的帮助。我想生成我的 Scaladoc,但我遇到了一些问题。 我实际上可以输入以下命令来创建我的 Scaladoc: mvn sc
使用 @See scaladoc 的确切语法是什么?如何引用: 同一个类中的方法 另一个类(class) “http”引用 ? 最佳答案 语法与 scaladoc 的任何其他部分相同。您基本上添加 @
当我在 IntelliJ 中键入带有参数的方法然后尝试向其添加 doc 标签时,当我键入时 /** 我希望为我填写@param 和@return 标签。当我输入上面的内容时,我怎样才能让它自动发生 例
我是一名优秀的程序员,十分优秀!