Tag: 斯卡拉

与断言相比,scala中的假设是什么意思?

斯卡拉似乎定义了三种断言: assert , require和assume 。 据我所知, require的区别(与通用断言相比)是专门用于检查input(参数,传入消息等)的。 那么assume的含义是什么?

什么是所有的任何cruft交易?

Either类看起来很有用,使用它的方式非常明显。 但是接下来我看看API文档,我很困惑: def joinLeft [A1 >: A, B1 >: B, C] (implicit ev: <:<[A1, Either[C, B1]]): Either[C, B1] Joins an Either through Left. def joinRight [A1 >: A, B1 >: B, C] (implicit ev: <:<[B1, Either[A1, C]]): Either[A1, C] Joins an Either through Right. def left : LeftProjection[A, B] Projects this Either as a Left. […]

你如何使用浮动提升embedded更新多列?

你如何使用浮动提升embedded更新多列? 这个文件不多说。 我预料到这是这样的 Query(AbilitiesTable).filter((ab: AbilitiesTable.type) => ab.id === ability_id).map((ab: AbilitiesTable.type) => (ab.verb, ab.subject)).update("edit", "doc")

select一个Scala Web框架

我即将开始一个应该运行在Tomcat服务器上的Web应用程序的项目。 我决定去Scala–另一个我正在使用Groovy的替代scheme – 基本上是为了types安全。 我现在面临为工作select正确工具的任务。 我需要开发的项目只能通过JSON API访问。 它将与自己的数据库和两个外部服务交互,这两个服务分别公开一个JSON和XML API。 我还需要能够安排周期性的工作,我的应用程序将执行与这些外部服务的各种同步任务。 对于数据库,我希望能够在Scala中定义我的模型并自动生成模式。 如果有需要改变我的模型,我想有移民来处理它。 对于这个应用程序,我正在评估Lift,Play! 2和Scalatra。 电梯是我的第一select。 这是三个项目中最成熟的,似乎被认为是高度安全的(我不想在安全上妥协)。 此外,它具有什么似乎是在斯卡拉最好的JSON处理库。 尽pipe如此,我不确定这是否是正确的select。 这个文档并不是我见过的最好的。 而且,Record + Squeryl似乎比Mapper更好的抽象,但是这个用法的文档更加稀缺。 最后,Lift虽然可以用来创buildWeb服务,但它的真正优势似乎在于处理状态,所以我不相信我的项目需要额外的复杂性。 玩! 2似乎有一个更好的文档,看起来更熟悉(我来自Django的背景)。 同样,它的默认数据库抽象并不能使我安心:ANORM依赖于SQL,这对于types检查没有帮助。 无论如何,我将不得不使用Squeryl,我不确定这个用例的文档是否一样好。 而且,部署Play! 目前有2个应用程序比我想要的要复杂得多。 一个人必须安装Play! 在生产服务器上,我不知道这是我工作的一个选项。 否则,有一个插件可以使它与servlet容器一起工作,但它是非常新的,我不确定它是多么的稳定/可靠。 最后还有使用Scalatra的选项。 Scalatra似乎很容易build立,它的devise正是为了创buildWeb服务。 妥协是Scalatra不提供太多的function。 它不与现有的ORM集成,也不build议如何组织应用程序的模型部分,也不能帮助devisecron或命令行任务。 我也不确定项目的长远未来。 你认为什么是我的任务的最佳select?

如何调查对象/types/等。 来自Scala REPL?

我已经和Scala一起工作了一段时间,并且写了一个超过10,000个的线程程序,但是我仍然对一些内部工作感到困惑。 在和Java,C和Lisp熟悉之后,我来到了Python的Scala,但是即使如此,它也一直很慢,而且一个巨大的问题是我试图调查对象/types的内部工作时经常遇到的令人沮丧的难题/类/等。 与Python相比,使用Scala REPL。 在Python中,您可以使用foo调查任何对象foo (types,全局variables中的对象,内置函数等),以查看该事物的计算结果, type(foo)以显示其types,指示dir(foo)你可以调用它的方法,并help(foo)获取内置的文档。 即使没有与之关联的对象,甚至可以执行诸如help("re")来find名为re的包(包含正则expression式对象和方法)的文档。 在Scala中,您可以尝试在线阅读文档,查看源代码到图书馆等等,但是对于不知道在哪里甚至是在什么地方的东西(通常是很常见的一个庞大的大块咬,考虑到大量的types层次结构) – 东西在各个地方(包scala , Predef ,各种隐式转换,像::这样的符号几乎是不可能的谷歌)浮动。 REPL应该是直接探索的方式,但事实上,事情更加神秘。 假设我已经在某处看到了某个引用,但是我不知道它是什么。 显然没有“用REPL系统地调查Scala东西的指南”这样的东西,但是下面是我经过大量的反复试验后拼凑起来的东西: 如果foo是一个值(大概包含存储在variables加上伴随对象和其他Scala object的东西),那么可以直接评估foo 。 这应该告诉你结果的types和价值。 有时结果是有帮助的,有时候不是。 如果foo是一个值,则可以使用:type foo来获取其types。 (不一定有启发性。)如果你在函数调用中使用它,你将得到返回值的types,而不用调用函数。 如果foo是一个值,你可以使用foo.getClass来获得它的类。 (通常比以前更有启发性,但是一个对象的类与其types有什么不同?) 对于一个类foo ,可以使用classOf[foo] ,虽然结果的含义并不明显。 从理论上讲,你可以使用:javap foo来反汇编一个类 – 这应该是最有用的,但是对于我来说却完全失败了。 有时你必须从错误消息中把东西拼凑起来。 失败的例子使用:javap : scala> :javap List Failed: Could not find class bytes for 'List' 启发错误信息示例: scala> assert <console>:8: error: ambiguous reference […]

Haskell vs JVM的性能

我想写一个网站的后端系统(这将是一个自定义的search式服务)。 它需要高度并发和快速。 考虑到并发的愿望,我打算使用Haskell或Scala之类的函数式语言。 但速度也是重中之重。 http://benchmarksgame.alioth.debian.org结果似乎表明,Java几乎和C / C ++一样快,Scala一般都很好,但是对于大多数任务来说,Haskell的范围从慢到慢很多。 有没有人有任何性能的基准/经验使用哈斯克尔vs斯卡拉vs Java执行高度并发的任务? 我见过的一些网站表明,斯卡拉有内存泄漏,这可能是长期运行的服务,如这一个可怕的。 我应该写些什么服务,或者在select之前应该考虑什么(性能和并发是最高优先级)? 谢谢

Groovy的地图集合方法

Groovy中是否有map方法? 我想做一些类似于下面的Scala代码片段的事情: scala> val l = List(1, 2, 3) l: List[Int] = List(1, 2, 3) scala> l.map(_ + 1) res0: List[Int] = List(2, 3, 4)

在Scala中,是否有一种简单的方法将case类转换为元组?

有一个简单的方法来将一个案例类转换成一个元组? 当然,我可以轻松地写出样板代码来做到这一点,但我的意思是没有样板。 我真正追求的是一种轻松地按照字典顺序进行案例分类的方法。 我可以通过导入scala.math.Ordering.Implicits._实现元组的目标,并且瞧,我的元组有一个为它们定义的Ordering。 但是,scala.math.Ordering中的含义不适用于一般的case类。

创build简单的项目SBT 0.10.X

(这跟不上正确的创build项目 ,问题没有得到回答。) 基本上, 这个问题说:“我不知道如何在新build立的项目下创build一个项目,而在旧的项目中,我只是在一个新的文件夹中运行,并且有一个向导让我通过设置。 接受的答案并不解释如何创build一个新的项目,它只是指向文档 ,也没有明确说明如何创build一个新的项目 – 只有如何编写build.sbt文件。 所以我试着先写一个build.sbt ,然后用build.sbt文件在目录中运行sbt ,但是我仍然没有看到一个src目录可以使用。 有人可以简单地逐步发布(我假设最多有3个步骤)指导如何在sbt 0.10.X下创build一个新项目?

IntelliJ IDEA中“scala-2.11”文件夹的用途是什么?

IDEA和Scala插件最近更新后出现了scala-2.11文件夹。 它应该用于什么?