小编Pau*_*aul的帖子

连接包含在一组对象中的集合,在scala中功能上

我刚刚开始使用scala,我正在将一些java代码转换为scala,并尝试使其更好,功能更优雅.

我有以下代码包含一个方法(getRequiredUploadPathKeys),它提供了MyClass中所有可用路径模板所需的所有路径键的并集.

trait PathTemplate {
    def getRequiredPathKeys:Set[PathKey]
}

class MyClass(accessPaths:Set[PathTemplate], targetPath:PathTemplate){

    def getAllRequiredPathKeys: Set[PathKey] = {
        val pathKeys = HashSet[PathKey]()
        pathKeys.addAll(targetPath.getRequiredPathKeys)

        for (accessTemp <- accessPaths) {
            pathKeys.addAll(accessTemp.getRequiredPathKeys)
        }
        return pathKeys
    }
}
Run Code Online (Sandbox Code Playgroud)

这个方法似乎在scala中可以更加简洁.任何人都可以指出我如何到达那里?

谢谢,保罗

scala scala-collections

2
推荐指数
2
解决办法
567
查看次数

协方差和Scala集合

我正试图了解Scala集合的协方差.我有以下内容:

abstract class MediaFormat{
    def name:String
    def status:String
}

case class H264_high(status:String="on") extends MediaFormat {
    def name = "h264_high"
}
case class H264_med(status:String="on") extends MediaFormat {
    def name = "h264_med"
}
case class H264_low(status:String="on") extends MediaFormat {
    def name = "h264_low"
}
case class H264_syndication(status:String="off") extends MediaFormat {
    def name = "h264_syndication"
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是拥有一组所有这些格式,因为我需要一个集合,每个格式只出现一次,所以我试过:

object MediaFormat {
    val allFormats:Set[MediaFormat] = Set(H264_high,H264_low)
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译时异常,因为正如我现在所理解的,Set是不变的.

所以我想,我想我只需要使用List并自己管理重复的值

但后来我试试这个:

object MediaFormat {
    val allFormats:List[MediaFormat] = List(H264_high,H264_low)
}
Run Code Online (Sandbox Code Playgroud)

因为据我了解,List 协变的,但仍然无法编译.

有人可以帮助我理解我应该做些什么来获取我的格式集合?

scala list set covariance

1
推荐指数
1
解决办法
249
查看次数

标签 统计

scala ×2

covariance ×1

list ×1

scala-collections ×1

set ×1