栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Scala中的切片符号?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Scala中的切片符号?

scala> import collection.IterableLikeimport collection.IterableLikescala> implicit def pythonicSlice[A, Repr](coll: IterableLike[A, Repr]) = new {     |   def apply(subrange: (Int, Int)): Repr = coll.slice(subrange._1, subrange._2)     | }pythonicSlice: [A,Repr](coll: scala.collection.IterableLike[A,Repr])java.lang.Object{def apply(subrange: (Int, Int)): Repr}scala> val list = List(3, 4, 11, 78, 3, 9)list: List[Int] = List(3, 4, 11, 78, 3, 9)scala> list(2 -> 5)res4: List[Int] = List(11, 78, 3)

这样可以吗

免责声明:未正确概括。


编辑:

scala> case class PRange(start: Int, end: Int, step: Int = 1)defined class PRangescala> implicit def intWithTildyArrow(i: Int) = new {     |   def ~>(j: Int) = PRange(i, j)     | }intWithTildyArrow: (i: Int)java.lang.Object{def ~>(j: Int): PRange}scala> implicit def prangeWithTildyArrow(p: PRange) = new {     |   def ~>(step: Int) = p.copy(step = step)     | }prangeWithTildyArrow: (p: PRange)java.lang.Object{def ~>(step: Int): PRange}scala> implicit def pSlice[A](coll: List[A]) = new {     |   def apply(prange: PRange) = {     |     import prange._     |     coll.slice(start, end).grouped(step).toList.map(_.head)     |   }     | }pSlice: [A](coll: List[A])java.lang.Object{def apply(prange: PRange): List[A]}scala> val xs = List.range(1, 10)xs: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)scala> xs(3 ~> 9)res32: List[Int] = List(4, 5, 6, 7, 8, 9)scala> xs(3 ~> 9 ~> 2)res33: List[Int] = List(4, 6, 8)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/653161.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号