在我正在学习的书中,有一个练习:
编写一个循环,交换整数数组的相邻元素。例如,Array(1,2,3,4,5)
变成了Array(2,1,4,3,5)
。我的解决方案是:
var v = Array(0,1,2,3,4,5,6,7,8,9)
for (i <- 0 until v.length by 2) {
var temp = 0
temp = v(i+1); v(i+1) = v(i); v(i) = temp
}
该算法运行良好,但并没有完全利用Scala的潜力,就像我用C语言写的一样。
重复前面的赋值,但是用交换的值生成一个新数组。用于/产出。
现在我尝试了:
val a = ArrayBuffer(1,2,3,4,5)
var res = for (i <- 0 until a.length by 2) yield a(i)
for (i <- 1 until a.length by 2) res(i-1)=a(i) <---------eclipse give me an error
错误是:“值更新不是 scala.collection.immutable.IndexedSeq[Int] 的成员”
我该如何解决这个任务?我知道语法“for / yield”非常强大,但我不知道如何使用它。
在生成器中,使用< code>0直到v.length乘2,这是一个< code>IndexedSeq。这是您的输入类型,< code>yield将为< code>res生成相同的集合类型。
因为immutable.IndexedSeq
是不可变的,所以不能修改它。因此不允许使用res(i-1)=a(i)
来更新i-1处的项目。
因此,一种选择是在继续之前将<code>res</code>转换为可变集合。
一个通常更可取的选择是在不更新的情况下解决它。这里有一个使用<code>foldLeft</code>的例子,它迭代我们的<code>
val array = Array(1,2,3,4,5)
val result = (
for ( i <- 0 until array.length by 2)
yield
if (i < array.length-1)
Array(array(i+1), array(i))
else
Array(array(i))
).foldLeft (Array[Int]()) ((a,b) => a ++ b )
我正在通过Scala为不耐烦的自己工作,以刷新我的Scala编码技能。鉴于书中这一点所介绍的概念,我相信作者正在寻找以下内容:
val a = Array(1, 2, 3, 4, 5)
for (i <- 0 until a.length)
yield
if (i % 2 == 0)
if (i == a.length-1) a(i)
else a(i+1)
else a(i-1)
有一个< code >滑动功能可以满足您的需求:
(for {
i <- Array(1,2,3,4,5).sliding(2,2)
j <- i.reverse
} yield j).toArray
我正在写一个小程序,介绍如何计算网格中给定位置的邻域之和。由于某些原因,程序无法识别正确的值。我想知道这可能是因为我使用了try-catch来限制出界,还是我错过了什么? 我使用的是一个简单的3x3网格,编号为1-9。我在许多其他测试中使用了相同的矩阵,因此假设网格没有问题。即使我在一步一步地调试和检查时得到了11。我不太明白,有人有主意吗? 和中的-1只是将其强制为11(2 4 5),但程序在运
楼主情况:产品管理岗,投递之后立即收到AI面试测评,要在3天内完成,我卡点完成的。 问答环节: 1. 项目规划的时候会考虑哪些因素? 2. 工作中如何提高效率,自己会在哪些方面努力?具体讲讲。 3. 5年内的职业规划与人生目标。 4. 谈谈屈臣氏2年来的变化?(英文,此题必考,一定要提前准备好) 5. 屈臣氏有哪些需要提升的地方?(英文,这个题没见过,现场就阿巴阿巴,大概说的是线下店的服务优化)
正如我所理解的关键字,如果从迭代器块内部使用,它会将控制流返回给调用代码,当再次调用迭代器时,它会从中断的地方继续。 而且,不仅等待被调用者,而且还将控制权返回给调用者,只在调用者等待方法时选择停止的位置。 换句话说,没有线程,async和await的“并发性”是由巧妙的控制流引起的幻觉,其细节被语法所掩盖。 现在,我是一名前汇编程序员,我非常熟悉指令指针、堆栈等。我了解正常的控制流(子程序、递归
我在爬的时候遇到了一个问题http://www.brand-in-trend.ru. 正如您在下面看到的,我使用Scrapy并定义了Basespider。第一个解析器工作得非常好,返回在start\u url上找到的所有品牌。 现在,当我想向类别解析器产生回调请求时,我没有得到响应,也没有得到错误。蜘蛛刚刚退出。 蜘蛛网: 我已经尝试了以下方法来解决此问题: 我测试了生成的品牌URL(例如。htt
我有钥匙,有证书,有连锁证书。这个域名看起来像automation.mydomain.com 我有一个Sinatra服务器在上运行,通过确认。 我想将端口80和端口443流量重定向到3000。这是我的配置: 请注意,上述方法不起作用(http://automation.mydomain.com/结果
我正试图从亚马逊印度网站上搜集数据。在以下情况下,我无法使用yield()方法收集响应并解析元素:1)我必须从一个产品页面移动到另一个审阅页面2)我必须从一个审阅页面移动到另一个审阅页面 产品页 评论页 代码流: 1) customerReviewData()调用getCustomerRatingsAndComments(响应) 2) GetCustomerRatings和Comments(res