小编Cod*_*er0的帖子

Scala用if else返回布尔值

所以我必须遵循以下场景:

 def check(): Boolean = {
    for ((digit1,digit2,digit3) <- SetOfDigits){
      if ((1,2,5) == (digit1,digit2,digit3))
        true
      else
        false
}
  }

val SetOfDigits = Set((0,2,3),(1,5,6),(7,10,2),(1,2,5))
Run Code Online (Sandbox Code Playgroud)

现在的问题是函数必须返回一个布尔值,但它总是告诉我这里的返回类型是Unit?该函数应该迭代SetOfDigits,如果它找到相同的东西,(1,2,5)它应该返回true,否则为false?有没有人能够解决这个问题以及为了让它运转起来我必须做些什么?

boolean scala function set

8
推荐指数
2
解决办法
2万
查看次数

Scala从匹配大小写返回值

所以这是我的代码:

val regexMeter = """^\s*(\d+,*\d+)\s*[m]\s*$""".r
val regexCentimeter = """^\s*(\d+,*\d+)\s*cm\s*$""".r
val regexDecimeter = """^\s*(\d+,*\d+)\s*dm\s*$""".r
val regexMillimeter = """^\s*(\d+,*\d+)\s*mm\s*$""".r

val height = scala.io.StdIn.readLine("Please insert the height of your shape:")
height match {
  case regexMeter(value) => val newValue = value.toDouble*100
  case regexCentimeter(value) => val newValue = value.toDouble
  case regexDecimeter(value) => val newValue = value.toDouble*10
  case regexMillimeter(value) => val newValue = value.toDouble/10
  case _ => throw new IllegalArgumentException
}
Run Code Online (Sandbox Code Playgroud)

所以事情是我的输入是例如:"21m"并且它只获取21并且如果它的正则表达式与米匹配它将它分配给它val newValue并用它做一些东西.但是,当我现在想要打印那个值newValue时,它说它无法找到价值?如何从这个匹配案例中返回此val?

scope scala return-value pattern-matching

5
推荐指数
1
解决办法
8368
查看次数

列表中最长的单词

我有一个带字符串的列表,我想打印出最长的字符串

我已经尝试过该reduceLeft选项,但无论何时我应用它都会返回此错误:

type mismatch; found:String required:Ordering[?]
Run Code Online (Sandbox Code Playgroud)

以下是在第二行中抛出异常的代码:

val input2 = List("one", "two", "three", "four", "five")
for (entry <- input2.reduceLeft(_ max _)) println(input2.max)
Run Code Online (Sandbox Code Playgroud)

scala list

4
推荐指数
1
解决办法
2366
查看次数

Int 的 Scala 序列

我有这样的事情:

    case class FunctionsTest(lowerBound: Int = 1,
                                upperBound: Int = 1000,
                                factor: Int = 2) {
  require(lowerBound < upperBound)

  /**
    * implement a sequence of ints, which start with lowerBound and end with
    * upperbound.
    *
    * for all elements following should be true:
    *
    * xs(i) < xs(i+1)
    * xs(i) + factor == xs(i + 1) (for i > 0 and i <= 1000)
    *
    */
  val xs: Seq[Int] = Seq.range(lowerBound,upperBound +1)
Run Code Online (Sandbox Code Playgroud)

所以我需要一个这个类的序列来满足这些标准..我尝试了

序列范围()

但它为我创建了适合第一个标准的序列,但我不知道现在如何应用评论中提到的第二个标准?

int scala range sequence

2
推荐指数
1
解决办法
6333
查看次数

Scala foldLeft与列表

我有以下代码片段:

import scala.io.Source
object test extends App {

  val lineIterator = Source.fromFile("test1.txt").getLines()


  val fileContent = lineIterator.foldLeft(List[String]())((list, currentLine) => { 
    currentLine :: list
    list
    })


    fileContent foreach println

}
Run Code Online (Sandbox Code Playgroud)

假设test1.txt文件不为空,并且其中包含一些值。所以我对foldLeft函数的问题是,为什么此示例在此返回一个空列表,而当我listfoldLeft函数末尾删除时,它可以正常工作?为什么在值下返回一个空列表fileContent

functional-programming scala foldleft

2
推荐指数
1
解决办法
1812
查看次数

Scala中的不可变列表

我只想弄清楚像List这样的不可变的东西是如何工作的,以及我如何为它添加东西?

我很抱歉问这些愚蠢的问题,但是为什么我的列表在打印时总是空的?

var end = false
val list = List()
while (!end) {
  val input = scala.io.StdIn.readLine("input:")
  if (input == "stop" ) end = true
  else input :: list
}

println(list)

}
Run Code Online (Sandbox Code Playgroud)

很抱歉给我带来不便和这个相当愚蠢的问题!

scala list add immutability

1
推荐指数
1
解决办法
554
查看次数

Scala - 为什么::不更改List?

我刚刚写了这段代码以获得一些乐趣,我有一个问题,为什么它没有成功?

  val list = List[Int]()

  while (list.length < 20) {  
    Random.nextInt(100) :: list
  }

  println(list)
}
Run Code Online (Sandbox Code Playgroud)

似乎没有任何内容写入列表,但为什么会这样呢?我必须让它变得可变吗?为什么这里的::操作员工作不正常?

scala list immutability

-5
推荐指数
1
解决办法
104
查看次数