小编Ple*_*exQ的帖子

如何在Scala中检查字符串是否为十进制数

我仍然是Scala的新手,我几乎每天都在发现新的有趣的做事方式,但它们并不总是明智的,有时候已经存在于语言中作为一种结构而我只是不喜欢知道他们.所以,有了这个序言,我正在检查一个给定的字符串是否完全由数字组成,所以我在做:

def isAllDigits(x: String) = x.map(Character.isDigit(_)).reduce(_&&_)
Run Code Online (Sandbox Code Playgroud)

这是明智的还是不必要的愚蠢?有更好的方法吗?调用x.toInt并捕获异常更好,还是不那么惯用?是否存在性能优势/劣势?

scala

52
推荐指数
6
解决办法
5万
查看次数

在Scala中使用部分函数 - 它是如何工作的?

我是Scala的新手,我正在使用2.9.1,而我正试图了解如何使用部分功能.我对curried函数有一个基本的了解,我知道部分函数有点像curried函数,它们只有2nary或者其他类似函数.你可以告诉我,我有点绿.

看起来在某些情况下,比如XML过滤,能够部分功能是非常有利的,所以我希望能更好地理解如何使用它们.

我有一个使用RewriteRule结构的函数,但我需要它使用两个参数,而RewriteRule结构只需要一个,或一个部分函数.我认为这是我认为它有用的案例之一.

任何建议,链接,智慧的话等欢迎!

到目前为止,答案非常好,并且澄清了我的一些基本误解.我认为他们也解释了我在哪里挣扎 - 我想也许发布一个更具体的新问题会有所帮助,所以我也会这样做.

functional-programming scala jvm-languages

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

DB插件未在Play 2.0中注册

我刚刚开始使用play,我修改了我正在进行SQL读取的方式,现在我收到以下错误:

[Exception: DB plugin is not registered.]
Run Code Online (Sandbox Code Playgroud)

我给这个类的代码是:

package models

import play.api.db._
import play.api.Play.current

import anorm._

case class Housing(id: Long, rent: String, address: String, street0: String, street1: String, neighbourhood: String)

object Housing {

  def all(): List[Housing] = DB.withConnection { implicit c =>
    SQL("select * from housing")().map { row =>
      Housing(row[Long]("id"), row[String]("rent"), row[String]("address"), row[String]("street0"),
        row[String]("street1"), row[String]("neighbourhood"))
    }.toList
  }

  def create(rent: String, address: String, street0: String, street1: String, neighbourhood: String) {}

  def delete(id: Long) {}

}
Run Code Online (Sandbox Code Playgroud)

我不确定这甚至是最好的方法,但使用〜链似乎我最终会复制一堆东西.

scala anorm playframework-2.0

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

我在哪里可以找到jpa orm.xml用法示例

我试图看一些JPA orm.xml的使用示例.如果有人指导我链接,

java persistence jpa jpa-2.0

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

对子类型的Monoid应用程序不使用append运算符进行编译,但在显式调用时可以正常工作

我正在制作一个Monoid用于组合重试执行的策略,而RetryExecutor [T]是基于类型.我已经定义了以下基类型和一个monoid:

trait RetryExecutor[C] {
  def retry[T](f: C => T)(context: C): T

  def predicate: Option[Throwable]
  def application: Unit
  val retryEligible: PartialFunction[Throwable, Boolean]
}

object RetryExecutor {
  implicit def retryExecutorMonoid[A] = new Monoid[RetryExecutor[A]] {
  ...
}
Run Code Online (Sandbox Code Playgroud)

和一些基本类型,如:

case class LinearDelayingRetryExecutor[C](delayInMillis: Long)(val retryEligible: PartialFunction[Throwable, Boolean]) extends RetryExecutor[C] {
  override def predicate: Option[Throwable] = None
  override def application = Thread.sleep(delayInMillis)
}

case class RetryWithCountExecutor[C](maximumRetries: Int)(val retryEligible: PartialFunction[Throwable, Boolean])(implicit val logger: Logger) extends RetryExecutor[C] {
  var remainingTries = maximumRetries + 1

  override def application: …
Run Code Online (Sandbox Code Playgroud)

scala scalaz monoids

3
推荐指数
1
解决办法
127
查看次数

Grails集成测试因MissingMethodException而失败

我正在尝试测试用户登录的典型控制器流程.与大多数登录系统一样,存在扩展关系,Grails文档完全没用.它没有一个与典型用法实际相关的实例,并且是一个功能完整的示例.

我的测试看起来像这样:

@TestFor(UserController)
class UserControllerTests extends GroovyTestCase {
    void testLogin() {
        params.login = [email: "test1@example.com", password: "123"]
        controller.login()
        assert "/user/main" == response.redirectUrl
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器执行:

def login() {
    if (!params.login) {
        return
    }
    println("Email " + params.login.email)
    Person p = Person.findByEmail(params?.login?.email)
    ...
}
Run Code Online (Sandbox Code Playgroud)

失败的是:

groovy.lang.MissingMethodException:没有方法签名:immigration.Person.methodMissing()适用于参数类型:()值:[]

println中显示了正确的数据,但无法调用该方法.

测试套件不能整体使用模拟,因为有数据库触发器被调用,其结果需要进行测试.

奇怪的是,如果我在测试中直接调用该方法,它可以工作,但在控制器中调用它不会.

对于更新:我直接从grails命令重新生成测试,并添加了@Test注释:

    @TestFor(UserController)
    class UserControllerTests extends GroovyTestCase {
        @Test
        void testLogin() {
            params.login = [email: "test1@example.com", password: "123"]
            Person.findByEmail(params.login.email)
            controller.login()
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果我使用grail test-app -integration UserController运行它,这是有效的

虽然结果没有正确填充 - 响应为空,flash.message为null,即使它应该有一个值,redirectedUrl为null,内容主体为空,视图也是如此.

如果我删除@TestFor注释,它甚至没有丝毫的作用.它没有告诉我'params'不存在.

在另一个测试中,我有两种方法.第一个方法运行,找到Person.findAllByEmail(),然后第二个方法运行,找不到Person.findAllByEmail并崩溃类似的错误 - 方法丢失. …

testing grails grails-orm

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