arrays - 我无法解释以下一行代码
问题描述
下面的代码是用scala编写的,
val Array(f, t) = readLine().trim().split(" +").map(_.toInt)
我无法理解val Array(f, t)
。
对我来说,Array
是阶级。因此,我们只能创建对象,并且使用该对象,我们可以访问类的功能。否则我们可以访问 Array 类的静态方法,而无需为其创建对象。
-- 斯卡拉
def main(args: Array[String]): Unit = {
val n = readInt
val m = readInt
val f = Array.ofDim[Int](100000)
Arrays.fill(f, -1)
for (e <- 1 to m) {
val Array(f, t) = readLine().trim().split(" +").map(_.toInt)
// Code continues
}
}
解决方案
这就是所谓的模式匹配(例如,您可以在Extractors中进行检查)。您提到的代码意味着请将0
数组中的第一个(索引)值分配给f
,将第二个(索引1
)元素分配给,并且数组t
中不应有更多或更少的值。f
和都是t
新变量。
val Array(...)
您还提到了与语法的混淆。它转换为以下方法:scala.Array.unapplySeq[T](x:Array[T])
推荐阅读
- android - 应用已上传到 Google Play 但正在等待审核
- python - 为事件记录分配时间间隔 - 在 pandas 数据框中
- android - 在修改后的 livedata 中使用 kotlin 协程
. 运行计数器并取消它 - api - 使用 Bitbucket Api 删除 Bitbucket LFS
- amazon-web-services - 无法使用 terraform 创建 Amazon S3 访问策略
- node.js - 如何与 stdout.pipe(process.stdout) NodeJS 交互
- kotlin - 杰克逊升级后无法识别奇怪的属性名称
- react-spring - 有什么方法可以禁用当前使用 React Spring 过渡的组件上的绑定事件?
- python - 为什么我不能完全获取 python 字典中的列表值(Django 请求)?
- reactjs - 错误:无效的 LatLng 对象:(未定义,-0.09)(尝试从 django rest api 获取数据时)