我们可以改进我的代码以交换Scala中的相邻数组元素吗?

阿比吉特·萨卡(Abhijit sarkar)

我正在通过阅读“ Scala for the Im耐心”一书中的练习来学习Scala。一项练习要求:

编写一个循环,该循环交换整数数组的相邻元素。例如,Array(1、2、3、4、5)变为Array(2、1、4、3、5)

我用3种不同的方式来做到这一点,其中一种如下。我很好奇是否可以按照我的内联注释进行改进。

def swapWithGrouped(a: Array[Int]) = {
  a.grouped(2).map {
    // TODO: Can we use reverse here?
    case Array(x, y) => Array(y, x)
    // TODO: Can we use identity function here?
    case Array(x) => Array(x)
  }.flatten.toArray
}
马思

您可以使用.flatMap代替.map{..}.flatten
您也实际上并不需要匹配单个元素数组,因此您可以简单地使用一个变量(尽管我认为这确实取决于问题,有时显示模式中的对称性很好并且使意图更明确)。

所以 :

scala> def swapWithGrouped(a: Array[Int]) = {
         a.grouped(2).flatMap {
           case Array(x, y) => Array(y, x)
           case single => single
         }.toArray
       }
swapWithGrouped: (a: Array[Int])Array[Int]

scala> swapWithGrouped(a)  // a is Array(1,2,3,4,5)
res0: Array[Int] = Array(2, 1, 4, 3, 5)

Array(x,y) => Array(y,x)也很容易理解为错误,.reverse使意图更加明确,并具有可以删除单元素情况的附加好处。

scala> def swapWithGrouped(a: Array[Int]) = a.grouped(2).flatMap(_.reverse).toArray
swapWithGrouped: (a: Array[Int])Array[Int]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我们可以改善我的代码以交换Scala中的相邻数组元素吗?

来自分类Dev

我们可以在Java程序中编写Scala代码吗?

来自分类Dev

我们可以在代码中执行多个程序吗?

来自分类Dev

我们可以从DOM中删除元素吗?

来自分类Dev

我们可以确定php中数组元素的返回类型吗?

来自分类Dev

我们可以在NEAR中返回`AccountID`数组吗?

来自分类Dev

我们如何交换数组中的两个元素?

来自分类Dev

我们可以从多维数组更改javascript中元素的颜色属性吗?

来自分类Dev

我们可以使用数组的最后一个元素吗?

来自分类Dev

我们可以在Python中使用C代码吗?

来自分类Dev

我们可以推送代码GIT功能分支吗?

来自分类Dev

我们可以在Android上实现MATLAB代码吗?

来自分类Dev

我们可以编译Windows程序的源代码吗?

来自分类Dev

我们可以推送代码GIT功能分支吗?

来自分类Dev

我们可以在DOM的末尾显示HTML元素吗?

来自分类Dev

我们可以在C中的CGI脚本中添加PHP代码吗?

来自分类Dev

我们可以改进这种bin计数的o(mn)算法吗?

来自分类Dev

在aspx代码中,我们可以在验证控件ErrorMessage中使用Templatefield .HeaderText吗?

来自分类Dev

我们可以在mysql中运行代码而不创建过程吗

来自分类Dev

我们可以从项目的.git文件夹中获取源代码吗

来自分类Dev

我们可以在程序宏属性中获取调用方的源代码位置吗?

来自分类Dev

我们可以在Django模型的字段中输入html代码吗?

来自分类Dev

我们可以查看Linux中的signal.h文件的源代码吗

来自分类Dev

我们可以在Java swing中编辑生成的代码吗?

来自分类Dev

我们可以在asp.net中添加现成的html代码吗?

来自分类Dev

在aspx代码中,我们可以在验证控件ErrorMessage中使用Templatefield .HeaderText吗?

来自分类Dev

我们可以在iOS中通过文本字段执行代码吗?

来自分类Dev

我们可以在scala中优雅地匹配已擦除类型吗?

来自分类Dev

我们可以在 jquery 中获取数组中的活动按钮吗?

Related 相关文章

  1. 1

    我们可以改善我的代码以交换Scala中的相邻数组元素吗?

  2. 2

    我们可以在Java程序中编写Scala代码吗?

  3. 3

    我们可以在代码中执行多个程序吗?

  4. 4

    我们可以从DOM中删除元素吗?

  5. 5

    我们可以确定php中数组元素的返回类型吗?

  6. 6

    我们可以在NEAR中返回`AccountID`数组吗?

  7. 7

    我们如何交换数组中的两个元素?

  8. 8

    我们可以从多维数组更改javascript中元素的颜色属性吗?

  9. 9

    我们可以使用数组的最后一个元素吗?

  10. 10

    我们可以在Python中使用C代码吗?

  11. 11

    我们可以推送代码GIT功能分支吗?

  12. 12

    我们可以在Android上实现MATLAB代码吗?

  13. 13

    我们可以编译Windows程序的源代码吗?

  14. 14

    我们可以推送代码GIT功能分支吗?

  15. 15

    我们可以在DOM的末尾显示HTML元素吗?

  16. 16

    我们可以在C中的CGI脚本中添加PHP代码吗?

  17. 17

    我们可以改进这种bin计数的o(mn)算法吗?

  18. 18

    在aspx代码中,我们可以在验证控件ErrorMessage中使用Templatefield .HeaderText吗?

  19. 19

    我们可以在mysql中运行代码而不创建过程吗

  20. 20

    我们可以从项目的.git文件夹中获取源代码吗

  21. 21

    我们可以在程序宏属性中获取调用方的源代码位置吗?

  22. 22

    我们可以在Django模型的字段中输入html代码吗?

  23. 23

    我们可以查看Linux中的signal.h文件的源代码吗

  24. 24

    我们可以在Java swing中编辑生成的代码吗?

  25. 25

    我们可以在asp.net中添加现成的html代码吗?

  26. 26

    在aspx代码中,我们可以在验证控件ErrorMessage中使用Templatefield .HeaderText吗?

  27. 27

    我们可以在iOS中通过文本字段执行代码吗?

  28. 28

    我们可以在scala中优雅地匹配已擦除类型吗?

  29. 29

    我们可以在 jquery 中获取数组中的活动按钮吗?

热门标签

归档