Questions tagged «scala»

Scala是主要针对Java虚拟机的通用编程语言。它旨在以简洁,优雅和类型安全的方式表达常见的编程模式,它融合了命令式和功能性编程风格。它的主要特征是:具有类型推断功能的高级静态类型系统;功能类型;模式匹配; 隐式参数和转换;操作符重载;与Java完全互操作性;并发


6
Scala的“魔术”功能列表
我在哪里可以找到Scala的“神奇”的功能列表,如apply,unapply,update,+=,等? 魔术函数是指编译器的某些语法糖使用的函数,例如 o.update(x,y) <=> o(x) = y 我用Google搜索了的scala magic和的某种组合functions,但没有找到任何东西。 我对标准库中魔术函数的用法不感兴趣,但是其中存在魔术函数。
72 syntax  scala 

6
如何在Play框架中处理可选查询参数
可以说我在Scala中有一个已经运行的基于Play 2.0框架的应用程序,该应用程序提供URL,例如: http:// localhost:9000 /生日 它以所有已知生日的列表作为响应 我现在想通过添加使用可选的“ from”(日期)和“ to”请求参数来限制结果的功能来增强此功能,例如 http:// localhost:9000 / birthdays?from = 20120131&to = 20120229 (此处的日期解释为yyyyMMdd) 我的问题是如何使用Scala在Play 2.0中处理请求参数的绑定和解释,特别是考虑到这两个参数都应该是可选的。 这些参数是否应在“路线”规范中以某种方式表达?或者,响应的Controller方法是否应该以某种方式从请求对象中分离参数?还有另一种方法吗?

1
什么是“点菜多态”,我如何从中受益?
瑞克·希基(Rick Hickey)在他的演讲“简单易用”中谈到“点菜多态”(视频中约30:00)。在同一上下文中,他还提到了Haskell的类型类和Clojure的多方法(和协议)。 由于我对这些概念不是很熟悉,因此我想了解它在尝试实现简单性时的用处。我对Scala中有关此概念的任何示例或展示特别感兴趣。



3
Scala类型关键字:如何最好地在多个类中使用它
在写完Haskell拼写之后回到Scala,我开始使用type关键字使我的类定义更具可读性,例如: type RestfulParams = Map[String, String] def canonicalize(params: RestfulParams): String = { ... } 我遇到的麻烦是这些类型定义需要存在于类或对象中-它们不是像Haskell中那样的“一流公民”。如果我尝试在类或对象之外定义类型,则会得到编译器expected class or object definition。 那么我的问题是如何在包中的多个类和对象之间使用这些类型?我现在所做的事情看起来很丑陋: object RestfulTypes { type RestfulParams = Map[String, String] etc } 然后在另一个类文件中: import utils.{RestfulTypes => RT} def get(resource: String, params: RT.RestfulParams): String = { ... } 有没有更好的方法可以做到-顺便问一下,Scala专家认为类型只能在类/对象中定义是好事还是坏事?
71 scala  types 

2
Scala中的forSome关键字是做什么用的?
我发现以下代码片段: List[T] forSome { type T } 在forSome看起来像一个方法,但我的朋友告诉我,这是一个关键字。 我在Google上进行了搜索,但找不到有关的文件forSome。这是什么意思,我在哪里可以得到一些文件?
71 scala 

3
Scala等效于java.util.ArrayList
我正在Scala中做一个项目,但是对于该语言来说还很新,并且具有Java背景。我看到Scala没有ArrayList,所以我想知道Scala相当于Java的ArrayList是什么,以及Java和Scala版本之间是否有重要区别。 编辑: 我不是在寻找一种特定的行为,而是在内部表示(数据存储在数组中,但是整个数组不可见,只有您使用的部分)。
71 java  scala  arraylist 

5
适用于Scala的GUI框架?
我的意思是: 成熟并广泛使用 丰富的小部件集,呈现效果很好 惯用的Scala 获得了所见即所得但灵活的GUI构建器 独立的API文档(如果是包装器,则不应使我用另一种语言引用父项目) 没有特别的顺序。 哪些GUI工具箱满足哪些条件?


1
如何从Scala的Collection中的索引中获取期权?
是否有一种方法,仅尝试使用Scala集合API在尝试通过索引获取元素时在List中获取Option? 我正在寻找与此功能等效的功能,它存在吗? def optionalValue[T](l: List[T], index: Int) = { if (l.size < (index+1)) None else Some(l(index)) } 谢谢

2
什么时候以及为什么应该在Scala中使用应用函子
我知道Monad可以在Scala中表示如下: trait Monad[F[_]] { def flatMap[A, B](f: A => F[B]): F[A] => F[B] } 我明白了为什么有用。例如,给定两个功能: getUserById(userId: Int): Option[User] = ... getPhone(user: User): Option[Phone] = ... 我很容易编写函数,getPhoneByUserId(userId: Int)因为Option它是monad: def getPhoneByUserId(userId: Int): Option[Phone] = getUserById(userId).flatMap(user => getPhone(user)) ... 现在我Applicative Functor在Scala中看到了: trait Applicative[F[_]] { def apply[A, B](f: F[A => B]): F[A] => F[B] …

5
如何在列表中使用Column.isin?
val items = List("a", "b", "c") sqlContext.sql("select c1 from table") .filter($"c1".isin(items)) .collect .foreach(println) 上面的代码引发以下异常。 Exception in thread "main" java.lang.RuntimeException: Unsupported literal type class scala.collection.immutable.$colon$colon List(a, b, c) at org.apache.spark.sql.catalyst.expressions.Literal$.apply(literals.scala:49) at org.apache.spark.sql.functions$.lit(functions.scala:89) at org.apache.spark.sql.Column$$anonfun$isin$1.apply(Column.scala:642) at org.apache.spark.sql.Column$$anonfun$isin$1.apply(Column.scala:642) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:35) at scala.collection.TraversableLike$class.map(TraversableLike.scala:245) at scala.collection.AbstractTraversable.map(Traversable.scala:104) at org.apache.spark.sql.Column.isin(Column.scala:642) 以下是我修复它的尝试。它编译并运行,但不返回任何匹配项。不知道为什么。 …

8
Scala-打印数组
似乎在Scala中缺少对打印数组的支持。如果您打印一个,则会得到Java中的默认垃圾: scala> val array = Array.fill(2,2)(0) array: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) scala> println(array) [[I@d2f01d 此外,您不能使用java.util.Arrays类中的Java toString / deepToString方法:(或者至少我无法弄清楚) scala> println(java.util.Arrays.deepToString(array)) <console>:7: error: type mismatch; found : Array[Array[Int]] required: Array[java.lang.Object] println(java.util.Arrays.deepToString(array)) 我可以找到的打印2D阵列的最佳解决方案是执行以下操作: scala> println(array.map(_.mkString(" ")).mkString("\n")) 0 0 0 0 有没有更惯用的方法呢?
71 scala 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.