小编4e6*_*4e6的帖子

使用Play 2.0项目在Intellij IDEA 11中找不到Scala编译器

我使用典型创建了一个项目play new,然后我用来play idea生成.iml文件.当我将.iml文件导入Intellij IDEA时,我无法弄清楚如何让编译器库识别.以下是一些截图:

在此输入图像描述

在此输入图像描述

请帮忙!

scala intellij-idea sbt playframework-2.0

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

玩!2.0 Scala - 访问全局对象

我已经声明了一个在应用程序启动时实例化的对象.我想在控制器内访问它,它是插件的一部分.我希望能够使用该插件,但我似乎无法超越第一部分 - 找到MyWebsocketConnection对象.这些例子都没有显示如何做到这一点.我不想注入控制器,因为我正在编写一个插件(我看到了如何在某处做的静态示例).

Global.scala,插件应用程序\ app\Global.scala

object Global extends GlobalSettings {

  object MyWebsocketConnection {
    val logger = // return something that gets instantiated once, like websocket object for logging to ui
  }

  class MyWebsocketConnection {
    import MyWebsocketConnection.logger
  }

  override def onStart(app: Application) {
    Logger.info("Application has started...");
  }

}
Run Code Online (Sandbox Code Playgroud)

我的自定义日志插件控制器:

MyLogger.Scala,插件应用程序\ app\controllers\MyLogger.scala

object MyLogger {

  def info(message: String) = {
    // THIS CAN'T BE FOUND ?
    // MyWebsocketConnection.logger.send(message)
  }

}
Run Code Online (Sandbox Code Playgroud)

所以,从Play!2.0应用程序引用该插件,我会(可能)做类似下面的事情,但我甚至无法在此之前通过该部分:

MyFutureController.scala,另一个玩!application\app\controllers\MyFutureController.scala

object MyFutureController extends Controller { …
Run Code Online (Sandbox Code Playgroud)

scala global sbt playframework-2.0

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

类型别名中的方差注释

最近我注意到方差注释可以用在类型别名中.以下示例来自Predef:

type Function[-A, +B] = Function1[A, B]
Run Code Online (Sandbox Code Playgroud)

我开始思考,它可以在哪里使用.显然,您不能将方差更改为相反,或使不变类型表现为共变或逆变.编译器会抛出一个错误,就像这样

scala> type BrokenFunc[+T, -R] = Function1[T, R]
<console>:7: error: covariant type T occurs in contravariant position in type 
  [+T, -R]T => R of type BrokenFunc
Run Code Online (Sandbox Code Playgroud)

但是,你可以使一些变体类型的行为像不变量(至少,编译器不会与此争论).所以,我试着制作一个不变的版本List

scala> type InvList[T] = List[T]
defined type alias InvList
Run Code Online (Sandbox Code Playgroud)

但是这个新的不变量List仍然表现得像它的原始协变版本:

scala> val l: InvList[String] = List("foo")
l: InvList[String] = List(foo)

scala> val anyList: InvList[Any] = l
anyList: InvList[Any] = List(foo)
Run Code Online (Sandbox Code Playgroud)

那么,我错过了什么?类型别名中的方差注释的目的是什么?您能举例说明带有方差注释的类型别名,它与原始类型不同.

alias scala variance

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

在模板播放2.0模板中将字符串转换为Scala中的Long

如何在Scala play 2.0模板中从String转换为long?

我想在以下操作中执行以下操作Application.profile(Long user_id):

<a href='@routes.Application.profile((Long) session.get("user_id"))'>@session.get("username")</a>
Run Code Online (Sandbox Code Playgroud)

templates scala playframework-2.0

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

Scala 2.10 TypeTag用法

我正在挖掘新的scala反射api,并且无法弄清楚为什么以下代码段不能按预期工作.给定层次结构(试图尽可能地简化):

import scala.reflect.runtime.universe._

trait TF[A] {
  implicit def t: TypeTag[A]

  def f[T <: A: TypeTag]: PartialFunction[Any, A] = {
    case msg: T if typeOf[T] =:= typeOf[A] => msg
  }
}

class TFilter[T: TypeTag] extends TF[T] {
  def t = typeTag[T]
}

case class Foo(x: Int)
Run Code Online (Sandbox Code Playgroud)

我希望方法f过滤给定类型的对象.所以下面的片段应该返回Seq[Foo]

val messages = Seq(1, "hello", Foo(1))

val tFilter = new TFilter[Foo]
messages collect tFilter.f[Foo]
Run Code Online (Sandbox Code Playgroud)

它实际上会返回,Seq[Foo]但其他消息未经过滤,这听起来像一个错误.

res1: Seq[Foo] = List(1, hello, Foo(1))
Run Code Online (Sandbox Code Playgroud)

问题.我使用TypeTag错误还是新反射api的缺陷?

PS0.试过Scala 2.10.0-RC1 …

reflection scala scala-2.10

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

函数调用 - >线程宏

我们这里需要括号来调用匿名函数

user=> (-> [1 2 3 4] (conj 5) (#(map inc %)))
(2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

为什么就没有必要加上括号map+,并fmap+在这些例子?

user=> (def map+ #(map inc %))
#'user/map+
user=> (-> [1 2 3 4] (conj 5) map+)
(2 3 4 5 6)

user=> (defn fmap+ [xs] (map inc xs))
#'user/fmap+
(-> [1 2 3 4] (conj 5) fmap+)
(2 3 4 5 6)
Run Code Online (Sandbox Code Playgroud)

clojure

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

路径依赖类型是否类型预测?

我现在正在深入阅读Scala.以下是本书的摘录:

所有与路径相关的类型都是类型投影.路径依赖类型由编译器foo.Bar重写foo.type#Bar...

在Scala中,所有类型引用都可以编写为针对命名实体的项目.scala.String类型是scala.type#String名称scala引用包的位置的简写,scala类型StringStringscala包上的类定义.

显然,没有scala.String课,但我没有重现这一点Null.

scala> type N = scala.type#Null
<console>:7: error: type mismatch;
 found   : type
 required: AnyRef
       type N = scala.type#Null
Run Code Online (Sandbox Code Playgroud)

所以,我的问题如下.路径依赖类型是否类型预测?它只是内部编译器表示还是可以用scala代码表示?

types scala projection path-dependent-type

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

Odd results when evaluating benchmark example from Rust Book

Benchmark tests from Rust Book

I am getting odd results from microbenchmarks that can be reproduced with the the example bench_xor_1000_ints from the Rust Book chapter on Benchmark tests.

The section Gotcha: optimizations gives general recommendations to return a value from the Bencher::iter closure and/or to use the black_box function. I ended up with these five variants:

Benchmark code

#![feature(test)]

extern crate test;

use test::{Bencher, black_box};

fn xor(x: i32, y: i32) -> i32 { x ^ y }

#[bench] …
Run Code Online (Sandbox Code Playgroud)

optimization benchmarking assembly rust

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

如何格式化播放2.0模板中的数字/日期?

我在玩2.0模板系统上有点挣扎; 我有一个方法返回scala中的'Int',我想用"#,###"模式格式化它.

我曾尝试@order.itemCount().format("#,###")@( order.item.count() format "#,###" ),但没有爱.

我不确定在播放模板语法中是否有一个技巧,或者我是否只需要学习如何在Scala中执行此操作.

scala playframework-2.0

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

scala-io,从tmpfs移动文件太慢了

我遇到了一个奇怪的scala-io moveTo方法问题.这是我的文件系统,tmp目录位于ram中.

~ % df -Th                                                               ~/ :)
Filesystem     Type      Size  Used Avail Use% Mounted on
rootfs         rootfs    112G   18G   89G  17% /
/dev           devtmpfs  3.9G     0  3.9G   0% /dev
run            tmpfs     3.9G  236K  3.9G   1% /run
/dev/sda       btrfs     112G   18G   89G  17% /
shm            tmpfs     3.9G  872K  3.9G   1% /dev/shm
tmpfs          tmpfs     3.9G   34M  3.9G   1% /tmp

将文件从tmp主目录移动到主目录或向后移动时,首先它的速度很慢(主观上约为1M/s,而iotop显示为1500M/s),其次是100%的CPU负载.在同一文件系统中移动文件时,一切都按预期工作.

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_03).
Type …
Run Code Online (Sandbox Code Playgroud)

scala tmpfs

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