我有一个List(1,2,3,4,5)并尝试通过以下方式获取子列表:List(3,4):
List(1 ,2 ,3 ,4 ,5).slice(this.size - 3 , this.size - 1 )
但我收到了错误
error: value size is not a member of object
我如何使用"这个" Scala中的参数就像在Java中一样。是否有其他方法可以实现目标。非常感谢你。
答案 0 :(得分:12)
您应首先声明列表,然后使用其名称list
而不是this
来引用列表:
val list = List(1 ,2 ,3 ,4 ,5)
list.slice(list.size -3, list.size -1)
如果您真的想在一行中执行此操作,请使用reverse
,但效率不高:
List(1 ,2 ,3 ,4 ,5).reverse.slice(1, 3).reverse
顺便说一句,该代码在Java中也无效。 this
指的是封闭对象,而不是列表。
答案 1 :(得分:4)
如果您想要最后3个或n个元素,可以使用takeRight(3)
或takeRight(n)
。
根据问题编辑进行编辑:
如果您不需要先使用f
和l
个元素,那么
List(1,2,3,....n).drop(f).dropRight(l)
对于您的情况,它将是List(1,2,3,4,5).drop(2).dropRight(1)
答案 2 :(得分:0)
问题是,这个单词并不是指向你的List,如果你想在List中间使用一些参数take takeRigth请阅读Scala Docs,最后是链接
val my_lst = List(1 ,2 ,3 ,4 ,5)
my_lst.takeRight(3).take(2)
my_lst: List[Int] = List(1, 2, 3, 4, 5)
res0: List[Int] = List(3, 4)
首先使用右侧my_lst.size - thepositions的索引计数,所以你必须在新的子列表中写下这些位置,然后你需要多少个元素
以下是对scala List
中方法的工作原理的解释来自Scala帮助文档
def slice(from:Int,until:Int):List [A]
返回
a list containing the elements greater than or equal to index from extending up to (but not including) index until of this list.
定义类 列表→LinearSeqOptimized→IterableLike→TraversableLike→GenTraversableLike示例:
//给出一个清单 val letters = List('a','b','c','d','e')
// slice
返回从索引from
开始的所有元素,之后,
//直到索引until
(不包括索引until
。)
letters.slice(1,3)//返回List('b','c')
在你的情况下使用长度或大小
scala> val my_lst = List(1 ,2 ,3 ,4 ,5)
my_lst: List[Int] = List(1, 2, 3, 4, 5)
scala> my_lst.slice(my_lst.length-3,my_lst.length)
res0: List[Int] = List(3, 4, 5)
但是真正的scala List类有很多适合你的功能。在你的情况下,如果你想要最后3个元素使用takeRight
def takeRight(n:Int):列出[A]
选择最后n个元素。
名词
the number of elements to take returns a list consisting only of the last n elements of this list, or else the whole list, if it has less than n elements.
定义类 列表→IterableLike
scala> my_lst.takeRight(3)
res2: List[Int] = List(3, 4, 5)
看看Scala Docs
答案 3 :(得分:-2)
你有一个清单(1,2,3,4,5)
1)那是一个函数或对象还是一个类?
2)您想使用List(x,x,3,4,x)
中的返回值3)您需要使用括号外的大小来从新的List函数中返回值...
4)创建一个函数来完成此步骤,然后将其返回到变量...
5)当你触发函数List()时,使用带有List(A,B,C,D,E)的变量
6)所有对象必须在使用前完全声明。例如,如何在没有空气的情况下使用篮球?或者如何在没有被猪皮覆盖的情况下使用足球?或者如何在没有CPU的情况下使用计算机?必须完全声明对象的所有组件并在编程中正常工作!
7)List()函数中的所有数据,函数和对象必须正常工作或...正常运行。 。 。
8)你说“一般来说我也希望在中间得到一些元素”..
9)作为资深程序员...你必须确切知道List()函数中元素的位置
10)同样从一开始,在您希望“使用”所有这些功能之前,您必须在程序的开头加载充满所有功能的类。
11)你不能像使用对象或类一样使用函数!
12)最后,你只想在编程语言设置规则或边界时发挥创意...... Scala不是Java ......
这有帮助吗? “错误:值大小不是对象的成员”