对于没有顺序的scala的循环?
发布时间:2020-12-16 19:01:37 所属栏目:安全 来源:网络整理
导读:所以,当我通过“不耐烦的 Scala”工作的时候,我发现自己在想:你可以使用没有顺序的Scala循环吗? 例如,本书中有一个练习,要求您构建一个不能通过Integer.MAX_VALUE递增的计数器对象.为了测试我的解决方案,我写了以下代码: var c = new Counterfor( i - 0 t
所以,当我通过“不耐烦的
Scala”工作的时候,我发现自己在想:你可以使用没有顺序的Scala循环吗?
例如,本书中有一个练习,要求您构建一个不能通过Integer.MAX_VALUE递增的计数器对象.为了测试我的解决方案,我写了以下代码: var c = new Counter for( i <- 0 to Integer.MAX_VALUE ) c.increment() 这会抛出一个错误:序列不能包含多于Int.MaxValue元素. 我意识到我可以这样做: var c = new Counter while(c.value < Integer.MAX_VALUE ) c.increment() 但是有什么办法可以用for语句来做一个传统的C-style for循环吗? 解决方法
实际上,0到N实际上并不填充从0到N的整数的任何东西.而是创建一个scala.collection.immutable.Range的实例,该实例将其方法应用于所有在运行中生成的整数.
您遇到的错误只是因为您必须能够将元素的数量(无论是否存在或不存在)纳入Int的积极部分,以便维护长度方法的合同. 1到Int.MaxValue工作正常,与0一样,直到Int.MaxValue.而后者是你的while循环正在做的(包括正确的端点,直到忽略它). 无论如何,由于Scala是一个非常不同的(比通用的)生物比C,简短的答案是否定的,你不能做完全相同的事情.但是你可以做你想要的(尽管也许没有你想要的那么快,因为有一些性能损失). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容