Tag: 斯卡拉

如何在Scala中findList中的唯一项目

Scala如何在List中find独特的项目?

什么是从一个不变的列表中“移除”一个元素的惯用的Scala方法?

我有一个列表,其中可能包含比较相等的元素。 我想要一个类似的列表,但删除了一个元素。 所以从(A,B,C,B,D)我想能够“去除”一个B得到例如(A,C,B,D)。 结果中元素的顺序无关紧要。 我有工作代码,在Scala中以Lisp风格的方式编写。 有没有更习惯的方式来做到这一点? 背景是一个纸牌游戏,其中有两套标准牌正在玩,所以可能有重复的牌,但仍然一次玩一个。 def removeOne(c: Card, left: List[Card], right: List[Card]): List[Card] = { if (Nil == right) { return left } if (c == right.head) { return left ::: right.tail } return removeOne(c, right.head :: left, right.tail) } def removeCard(c: Card, cards: List[Card]): List[Card] = { return removeOne(c, Nil, cards) }

如何将选项的Scala集合转换为X的集合

我正在开始探索Scala,我感兴趣的事情之一是Optiontypes和能够消除null相关错误的承诺。 然而,我还没有能够解决如何将一个列表(或其他集合),例如Option[String] ,转换为String集合(显然筛选出任何值为None )。 换句话说,我怎么从这里得到: List[Option[Int]] = List(Some(1)) 对此: List[Int] = List(1) 我正在使用Scala 2.8,如果这对答案有任何影响。

转换映射元组列表(并处理重复键?)

我正在想一个很好的方法来转换一个重复键[("a","b"),("c","d"),("a","f")]的元组列表映射("a" -> ["b", "f"], "c" -> ["d"]) 。 通常(在Python中),我会创build一个空的映射,并在列表中for循环,并检查重复键。 但是我在这里寻找更多可靠的解决scheme和巧妙的解决scheme。 顺便说一句,我在这里使用的键值的实际types是(Int, Node) ,我想变成一个映射(Int -> NodeSeq)

将types与数据构造函数关联的ADT编码有什么问题? (如Scala)

在Scala中,代数数据types被编码为sealed的一级types层次结构。 例: — Haskell data Positioning a = Append | AppendIf (a -> Bool) | Explicit ([a] -> [a]) // Scala sealed trait Positioning[A] case object Append extends Positioning[Nothing] case class AppendIf[A](condition: A => Boolean) extends Positioning[A] case class Explicit[A](f: Seq[A] => Seq[A]) extends Positioning[A] 对于case class和case object ,Scala会生成一堆类似equals , hashCode , unapply (被模式匹配使用)等等,它们带给我们许多传统ADT的关键属性和特性。 但是有一个关键的区别 […]

如何在scala中进行dependency injection?

我还在开始学习除了java之外的scala,我没有得到它应该如何做DI? 可以或应该使用现有的DI库,是否应该手动完成还是有其他方法?

在Scala中获得一个子数组的正确方法是什么?

我正在试图在scala中获得一个子数组,我对这样做的正确方法有点困惑。 我最想要的东西就像是如何在Python中做到这一点: x = [3, 2, 1] x[0:2] 但我相当肯定你不能这样做。 最明显的方法是使用Java Arrays util库。 import java.util.Arrays val start = Array(1, 2, 3) Arrays.copyOfRange(start, 0, 2) 但是在Scala中使用Java库总是让我觉得有点肮脏。 我发现最“斯卡拉”的方式是 def main(args: List[String]) { val start = Array(1, 2, 3) arrayCopy(start, 0, 2) } def arrayCopy[A](arr: Array[A], start: Int, end: Int)(implicit manifest: Manifest[A]): Array[A] = { val ret = new […]

HowTo:提升logging – Squeryl中的自定义字段

我正在尝试在Lift / Record / Squeryl中创build一个EnumListField,类似于LiftMapper中的MappedEnumList。 存储types应该是Long / BIGINT。 我明白,如果我定义: def classOfPersistentField = classOf[Long] 然后Squeryl会知道它应该创build一个BIGINT列。 而且我知道它使用setFromAny()来设置值,传入Long。 我不明白的一件是: 它将如何读取该字段的价值? 如果它使用valueBox,它将得到一个Seq [Enum#Value],并且不知道如何将它变成一个Long。 如何告诉Squeryl将我的Seq [Enum#Value]转换为Long,或者定义一个返回Long的“getter”,并且不与“正常”getter(s)冲突?

Reader Monaddependency injection:多重依赖,嵌套调用

当被问及Scala中的dependency injection问题时,很多答案都指向了使用Reader Monad的方法,无论是来自Scalaz还是自己的方法。 有很多非常清晰的文章描述了这种方法的基础(例如Runar的谈话 , Jason的博客 ),但是我没有设法find一个更完整的例子,我没有看到这个方法的优点,比如更多传统的“手动”DI(参见我写的指南 )。 很可能我错过了一些重要的观点,因此是一个问题。 举一个例子,让我们想象我们有这些类: trait Datastore { def runQuery(query: String): List[String] } trait EmailServer { def sendEmail(to: String, content: String): Unit } class FindUsers(datastore: Datastore) { def inactive(): Unit = () } class UserReminder(findUser: FindUsers, emailServer: EmailServer) { def emailInactive(): Unit = () } class CustomerRelations(userReminder: UserReminder) { def […]

阿卡的演员与斯卡拉的演员模型有什么区别

我发现还有一个阿卡演员模型,所以我想知道阿卡的演员和斯卡拉的演员模型之间有什么区别?