相关疑难解决方法(0)

应用逻辑和布尔值列表

请考虑Scala中的以下布尔值列表

List(true, false, false, true)
Run Code Online (Sandbox Code Playgroud)

您如何使用foldRight或foldLeft模拟对列表中的所有值执行逻辑AND的功能?

boolean scala fold logical-operators

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

Scala Vector折叠语法(/:和:\和/:\)

有人可以提供一些例子

/: :\/:\

实际上习惯了?我假设它们是reduce/fold方法的快捷方式,但是没有关于它们如何在Scala文档中实际使用的示例,并且它们无法在StackOverflow上进行谷歌/搜索.

syntax scala fold

15
推荐指数
2
解决办法
2862
查看次数

scala:以函数方式从集合中累积var(即,没有变量)

这是一个新手问题

我有以下代码:

var total = 0L
docs.foreach(total += _.length)
Run Code Online (Sandbox Code Playgroud)

在docs中我有一组带有.length属性的对象

我喜欢这样的东西:

val total = docs.[someScalaMethod](0, (element, acum) => acum + element.length )
Run Code Online (Sandbox Code Playgroud)

我的意思是,一个迭代每个元素传递累加器变量的方法......

我传递的第一个零应该是累加器var的初始值.

如何实现?

collections loops scala

15
推荐指数
2
解决办法
7241
查看次数

如何使用vararg案例类进行模式匹配?

我有一组像这样的案例类

abstract class Shape  
case class Rectangle(width: Int, height: Int) extends Shape  
case class Location(x: Int, y: Int, shape: Shape) extends Shape  
case class Circle(radius: Int) extends Shape  
case class Group(shape: Shape*) extends Shape
Run Code Online (Sandbox Code Playgroud)

其中基本上Group是一个形状数组.我需要定义一个大小方法来计算矩形,圆形和位置的大小,它直接只返回一个.但我对集团有困难.

object size extends Shape{  
  def size(s: Any) : Int = s match {  
    case Rectangle(x,y) => 1  
    case Group  // how to do it? Also having case Group(shape : Shape*) gives an error  
    case Circle(r) => 1    
    case Location(x,y,shape) => 1   
  }  
}  
Run Code Online (Sandbox Code Playgroud)

我知道对于Group我需要使用map并向左折叠,但我真的无法为它创建逻辑.谢谢

functional-programming scala pattern-matching

13
推荐指数
2
解决办法
3202
查看次数

Scala - 计算List [SomeObj]中SomeObj.double的平均值

我正处于scala的第二个晚上,我正在抵制用scala写东西的冲动,我曾经在java中做过这些,并试图学习所有的习语.在这种情况下,我希望只使用闭包,映射和列表理解这样的东西来计算平均值.无论这是否是计算平均值的最佳方法,我只想知道如何在scala中执行这些操作仅用于学习目的

这是一个例子:下面的平均方法几乎没有实现.我有几个其他的方法来查找个人用户ID给出的评级使用TraversableLike的查找方法(我认为),但没有更多的是scala特定的,真的.我如何计算给定List [RatingEvent]的平均值,其中RatingEvent.rating是一个双值,我将以类似scala的方式计算该List的所有值的平均值?

package com.brinksys.liftnex.model

class Movie(val id : Int, val ratingEvents : List[RatingEvent]) {

    def getRatingByUser(userId : Int) : Int =  {
        return getRatingEventByUserId(userId).rating
    }

    def getRatingEventByUserId(userId : Int) : RatingEvent = {
        var result = ratingEvents find {e => e.userId == userId }
        return result.get
    }

    def average() : Double = {
        /* 
         fill in the blanks where an average of all ratingEvent.rating values is expected
        */
       return 3.8
    }
}
Run Code Online (Sandbox Code Playgroud)

经验丰富的scala pro如何填充该方法并使用scala的功能使其尽可能简洁?我知道如何在java中这样做,这是我想要避免的.

如果我在python中这样做,我认为最pythonic的方式是:

sum([re.rating. for re in …
Run Code Online (Sandbox Code Playgroud)

scala

13
推荐指数
3
解决办法
3万
查看次数

Scala反向字符串

我是scala的新手,我只是编写一个简单的函数来反转给定的字符串:

def reverse(s: String) : String
  for(i <- s.length - 1 to 0) yield s(i)
Run Code Online (Sandbox Code Playgroud)

yield返回一个scala.collection.immutable.IndexedSeq [Char],并且不能将它转换为String.(或者是别的什么?)

我该怎么写这个功能?

scala

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

如何在列表中找到成绩最好的学生?

假设,我有一份清单Students.Students有像田name,birth date,grade等你将如何找到Students最好的grade斯卡拉?

例如:

List(Student("Mike", "A"), Student("Pete", "B"), Student("Paul", A))"

我想得到

List(Student("Mike", "A"), Student("Paul", A))

显然,我可以找到max grade(上面列表中的"A")然后filter列表

students.filter(_.grade == max_grade)

此解决方案仅O(N)在列表上运行两次.你能提出更好的解决方案吗?

scala list-comprehension

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