【发布时间】:2016-11-15 07:40:08
【问题描述】:
我当前的系统是一个映射的 String,List[Int],String 是一个键值,“Sk1”,“Sk2”等,而 int 是一个从 0-9 的数字列表。
这是我当前查找所有列表的方法,如何编辑它以仅查找所有大于所选“SK*”的“Sk*”。列表的值是尾部的最后一个元素,我已经有一个函数要查找。它是handleFive 选项菜单。为了澄清,我需要找到最后一个元素(已经有那个功能)然后只显示大于所选股票的股票。
菜单选项处理程序
def handleFive(): Boolean = {
mnuShowSingleDataStock(currentStockLevel)
true
}
def handleSeven(): Boolean = {
mnuShowPointsForStock(allStockLevel)
true
}
调用用户并与用户交互的函数
// Returns a single result, not a list
def mnuShowSingleDataStock(f: (String) => (String,Int)) = {
print("Stock > ")
val data = f(readLine)
println(s"${data._1}: ${data._2}")
}
//Returns a list value
def mnuShowPointsForStock(f: (String) => (String,List[Int])) = {
print("Stock > ")
val data = f(readLine)
println(s"${data._1}: ${data._2}")
}
不确定如何编辑,目前它显示列表中的所有值,我只想返回大于所选值的值
//Show last element in the list, most current
def currentStockLevel (stock: String): (String, Int) = {
(stock, mapdata.get (stock).map(findLast(_)).getOrElse(0))
}
//Unsure how to change this to only return values greater than the selected one, not everything
def currentStockLevel (stock: String): (String, List[Int]) = {
(stock, mapdata.get (stock).map(findLast(_)).getOrElse(0))
}
我当前的映射列表 - 这是 MAPDATA
val mapdata = Map(
"SK1" -> List(9, 7, 2, 0, 7, 3, 7, 9, 1, 2, 8, 1, 9, 6, 5, 3, 2, 2, 7, 2, 8, 5, 4, 5, 1, 6, 5, 2, 4, 1),
"SK2" -> List(0, 7, 6, 3, 3, 3, 1, 6, 9, 2, 9, 7, 8, 7, 3, 6, 3, 5, 5, 2, 9, 7, 3, 4, 6, 3, 4, 3, 4, 1),
"SK3" -> List(8, 7, 1, 8, 0, 5, 8, 3, 5, 9, 7, 5, 4, 7, 9, 8, 1, 4, 6, 5, 6, 6, 3, 6, 8, 8, 7, 4, 0, 6),
"SK4" -> List(2, 9, 5, 7, 0, 8, 6, 6, 7, 9, 0, 1, 3, 1, 6, 0, 0, 1, 3, 8, 5, 4, 0, 9, 7, 1, 4, 5, 2, 8),
"SK5" -> List(2, 6, 8, 0, 3, 5, 5, 2, 5, 9, 4, 5, 3, 5, 7, 8, 8, 2, 5, 9, 3, 8, 6, 7, 8, 7, 4, 1, 2, 3),
"SK6" -> List(2, 7, 5, 9, 1, 9, 8, 4, 1, 7, 3, 7, 0, 8, 4, 5, 9, 2, 4, 4, 8, 7, 9, 2, 2, 7, 9, 1, 6, 9),
"SK7" -> List(6, 9, 5, 0, 0, 0, 0, 5, 8, 3, 8, 7, 1, 9, 6, 1, 5, 3, 4, 7, 9, 5, 5, 9, 1, 4, 4, 0, 2, 0),
"SK8" -> List(2, 8, 8, 3, 1, 1, 0, 8, 5, 9, 0, 3, 1, 6, 8, 7, 9, 6, 7, 7, 0, 9, 5, 2, 5, 0, 2, 1, 8, 6),
"SK9" -> List(7, 1, 8, 8, 4, 4, 2, 2, 7, 4, 0, 6, 9, 5, 5, 4, 9, 1, 8, 6, 3, 4, 8, 2, 7, 9, 7, 2, 6, 6)
)
【问题讨论】:
-
@CyrilleCorpet 我已经更新了这个问题,也许让它更容易理解?如果你不介意再看一眼
-
如果您的库存是SK3,您是要获取SK4、SK5 ...到SK9中每一个的最后一个元素,还是SK3中所有值大于最后一个元素的元素?跨度>
-
如果我选择 SK3,我希望 SK4、SK5 等的所有最后一个元素的最后一个值都高于 SK3 @CyrilleCorpet 的最后一个值
-
您是否还想要 SK1 和 SK2 的最后一个值(如果它们更大)?它对代码没有太大的改变,但我只是确保我理解了这个问题。
-
是的,每一个更大的 SK 和数字,所以如果我搜索 SK1 会得到 SK2 > 9、SK3>8 等