gpt4 book ai didi

java - 如何使这种情况更像 Scala

转载 作者:行者123 更新时间:2023-11-29 10:06:19 26 4
gpt4 key购买 nike

我有以下方法:

def generateAssociatedImages : List[ImageFileEntry] = {

if ( this.page > 1 && this.page < this.fileEntry.pageCount ) {
List( copyWithPage( this.page - 1 ), copyWithPage( this.page + 1 ) )
} else {
if ( page == 1 && page != file.fileEntry.pageCount ) {
List( copyWithPage( this.page + 1 ) )
} else {
List( copyWithPage( this.page - 1 ) )
}
}

}

但是这个看起来太像 Java(如果我使用 Ruby,我会在一个范围上做一个 switch/case,然后做其他比较)。在 Scala 中是否有更实用的方法来做到这一点?

行为非常简单:

  • 如果输入是第 1 页,总页数是 3,则输出是 [2]
  • 如果输入为第 2 页,总页数为 3,则输出为 [1,3]
  • 如果输入是第 3 页,总页数是 3,则输出是 [2]

我正在寻找一个惯用的解决方案,我对 Scala 还是个新手。

如果我能做这样的事情就好了:

( 1 until 3 ).hasNext( 2 )

最佳答案

假设在一个页面上,图像列表是空的,你可以有以下内容:

def generateAssociatedImages: List[ImageFileEntry] = {
val pageCount = fileEntry.pageCount
page match {
case `pageCount` if page == 1 => List()
case `pageCount` => List(copyWithPage(pageCount - 1))
case 1 => List(copyWithPage(2))
case x => List(copyWithPage(x - 1), copyWithPage(x + 1))
}
}

关于java - 如何使这种情况更像 Scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com