加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

list – scala Range for Long

发布时间:2020-12-16 18:26:39 所属栏目:安全 来源:网络整理
导读:我是 Scala语言的新手. 我需要Range for Long类型. 我需要一个[1,2,3 … 10000000]列表和步骤1.如果我使用直到/我因为使用??Long而不是Int而得到错误. 我尝试编写一个简单的函数,它需要一个开始,一个结束和一个空List,并生成一个[start .. end]列表. 这是我
我是 Scala语言的新手.

我需要Range for Long类型.

我需要一个[1,2,3 … 10000000]列表和步骤1.如果我使用直到/我因为使用??Long而不是Int而得到错误.

我尝试编写一个简单的函数,它需要一个开始,一个结束和一个空List,并生成一个[start .. end]列表.

这是我的功能:

def range_l(start : Long,end : Long,list : List[Long]) : List[Long] = {
    if (start == end){
        val add_to_list = start :: list
        return add_to_list
    }
    else {
        val add_to_list = start :: list
        range_l(start + 1,end,add_to_list)
    }
}

如果我把它称为:range_l(1L,1000000L,List())我在以下行中得到OutOfMemory错误:add_to_list = start :: list

你能给我什么建议?如何获得Range [Long]或如何优化功能.我怎样才能避免OutOfMemory?

谢谢.

解决方法

您可以使用以下语法创建此类范围:

val range = 1L to 10000000L

‘L’必须通知编译器litterals是longs而不是int.

然后,您可以在实例范围上使用几乎所有List方法.它不应该填满你的内存,因为中间值是在需要时生成的.范围可以传递给期望Traversable [Long],Seq [Long],Iterable [Long]等的任何方法.

但是,如果你真的需要List只调用range.toList(并增加堆大小以容纳所有列表元素)…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读