小编mus*_*oom的帖子

访问名为"type"的java成员变量

我正在使用一个java库,其中一个类有一个名为"type"的成员.如果我做这样的事情:

class MyClass{
  public MyClass(){
    type = 5;
  }
  public int type;
}
Run Code Online (Sandbox Code Playgroud)

然后java编译器编译好了.但是,如果我尝试从scala访问它:

val x = new MyClass()
x.type = 10
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

预期的标识符,但找到'类型'.

我该如何解决这个问题?

我猜这已经出现过,但我找不到相关的问题.

scala scala-java-interop

4
推荐指数
1
解决办法
175
查看次数

有没有办法阻止在Rails视图中呈现注释?

我想知道是否有办法防止在Rails视图中呈现注释(除了删除它们).我在视图中的评论主要是针对开发人员的,我不希望用户能够在html中阅读它们.我可以设置一些删除所有注释的渲染选项吗?

我正在使用haml,如果这很重要的话.

haml ruby-on-rails

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

我可以将let语句放在F#list comprehension中吗?

我试图在F#中编写列表解析并且无法编译它:

[for x in xs do
    let y = f(x)
    when g(y) -> y]
Run Code Online (Sandbox Code Playgroud)

有没有办法在列表理解中保存中间计算?我如何重写这个列表理解,以便编译?

f#

3
推荐指数
2
解决办法
294
查看次数

使用 scala.sys.process.run 启动时运行 Play 应用程序的 SBT 会立即退出吗?

我正在编写一个需要启动多个应用程序的集成测试。这些应用程序之一是名为 Play 的 SBT 项目appA

我可以使用scala.sys.process以下命令在正确的端口上启动应用程序:

import scala.sys.process._
import org.scalatest._

class Main extends FeatureSpec with Matchers{
  val app = Seq("sbt", "project appA", "run 7777").run
  println(app.exitValue)
}
Run Code Online (Sandbox Code Playgroud)

然而,生成的应用程序会立即退出并返回 value 0。控制台上不会显示任何错误。我只看到:

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:3000

(Server started, use Ctrl+D to stop and go back to the console...)


[success] Total time: 1 s, completed Feb 27, 2014 10:26:56 PM
0
Run Code Online (Sandbox Code Playgroud)

输出末尾的 0 来自调用exitValue创建的进程。exitValue阻塞直到生成的进程退出。

如何运行 Play 应用程序而不立即退出?有更好的方法来启动应用程序吗?

scala sbt playframework-2.0

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

设计确认电子邮件被发送到错误的Heroku应用程序

我正在Heroku上运行两个Rails 3.1.0应用程序.其中一个应用程序仅用于暂存目的.我使用Devise进行身份验证,使用sendgrid来处理电子邮件.

当用户在主应用程序上注册时,确认电子邮件似乎已正常发送.但是,当用户单击电子邮件中的确认链接时,它们将被发送到登台应用程序.电子邮件中的链接是confirmation_url,它似乎没有硬编码到我的应用程序中的任何内容.

有关为何可能发生这种情况的任何想法或有关如何进行调试的建议?

ruby-on-rails heroku devise sendgrid

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

为什么重新接收不会导致此测试失败?

我使用Rails 3.1.0和的ReCaptcha宝石在这里.我正在进行黄瓜测试,检查用户是否可以注册.注册需要用户填写验证码.我知道我的测试没有触及验证码:

When /^I create a new account with email: "(.*?)" and password: "(.*?)"$/ do |email, pw|
    click_link "Sign up"
    fill_in "Email", :with => email
    fill_in "Password", :with => pw
    fill_in "Password confirmation", :with => pw
    click_button "Sign up"
end
Run Code Online (Sandbox Code Playgroud)

但测试仍然通过.我通过验证页面上是否存在成功注册消息来检查成功,并且使用此步骤不存在重新签名失败消息:

Then /^I should (not )?see "(.*)"$/ do |negate, text|
  if negate
    page.should_not have_content text
  else
    page.should have_content text
  end
end
Run Code Online (Sandbox Code Playgroud)

控制器几乎与此处建议的第一个相同.

  class RegistrationsController < Devise::RegistrationsController
    def create
      if verify_recaptcha
        super
      else
        build_resource
        clean_up_passwords(resource)
        flash.now[:alert] = …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails recaptcha cucumber

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

从scala控制台内运行数据库演变

我已经从scala控制台中启动了我的应用程序:

scala> import play.core.StaticApplication
scala> new StaticApplication(new java.io.File("."))
Run Code Online (Sandbox Code Playgroud)

我得到警告,默认数据库需要进化.如何从scala控制台中运行这些演变?

scala playframework

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

为什么scala编译器不会将其识别为元组?

如果我创建一个地图:

val m = Map((4, 3))
Run Code Online (Sandbox Code Playgroud)

并尝试添加新的键值对:

val m_prime = m + (1, 5)
Run Code Online (Sandbox Code Playgroud)

我明白了:

 error: type mismatch;
 found   : Int(1)
 required: (Int, ?)
       val m_prime = m + (1, 5)
Run Code Online (Sandbox Code Playgroud)

如果我做:

val m_prime = m + ((1, 5))
Run Code Online (Sandbox Code Playgroud)

要么:

val m_prime = m + (1 -> 5)
Run Code Online (Sandbox Code Playgroud)

然后它工作.为什么编译器不接受第一个例子?

我使用的是2.10.2

scala

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

导入FlatMap实例中断应用程序构建器语法

对于我的示例,我将使用Options,但在我的实际代码中,我使用的是自定义数据类型.添加导入import cats.std.option._将解决示例中的问题.我有一些看起来像这样的代码:

import cats.{FlatMap, Eval, Applicative}
import cats.data.Kleisli
import cats.syntax.all._

implicit val optionApplicative = new Applicative[Option] {
  override def pure[A](x: A): Option[A] = Option(x)
  override def ap[A, B](fa: Option[A])(f: Option[(A) => B]): Option[B] = for {
    a <- fa
    fUnwrapped <- f
  } yield fUnwrapped(a)
}

val test : Option[(Int, String)] = (Option(4) |@| Option("name")).map((_, _))
Run Code Online (Sandbox Code Playgroud)

这段代码编译运行得很好.

接下来我曾经Kleisli写过一些返回的函数Option:

val test2 : List[Int] => Option[Int] = {
  val f = (xs : List[Int]) …
Run Code Online (Sandbox Code Playgroud)

scala implicit scala-cats

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

定义F#计算表达式时,Zero成员的目的是什么?

我正在尝试学习F#计算表达式.一般来说,零成员的目的是什么?

它对序列的定义是什么?

它对异步工作流程的定义是什么?

f# computation-expression

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

rspec的行为与FactoryGirl一起使用

我正在尝试使用FactoryGirl为我的一个控制器规格创建一些项目:

摘录:

describe ItemsController do
    let(:item1){Factory(:item)}
    let(:item2){Factory(:item)}

    # This fails. @items is nil because Item.all returned nothing
    describe "GET index" do
        it "should assign all items to @items" do
            get :index
            assigns(:items).should include(item1, item2)
        end
    end

    # This passes and Item.all returns something 
    describe "GET show" do
        it "should assign the item with the given id to @item" do
            get :show, id => item1.id 
            assigns(:item).should == item1
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

当我将let更改为:

before(:each) do
    @item1 = Factory(:item)
    @item2 = Factory(:item)
end …
Run Code Online (Sandbox Code Playgroud)

rspec factory-bot

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

覆盖client_side_validations行为以验证隐藏字段

我在Rails 3.1.0中使用client_side_validations gem.我一直在尝试使用它来验证通过javascript小部件设置的隐藏字段.根据我在gem的github页面上读到的内容,gem故意不会验证隐藏字段,因为用户无法更正这些字段.我没有成功尝试覆盖此行为.

有没有办法在不修改client_side_validations代码的情况下覆盖特定字段的此行为(除了安装gem时生成的init内容)?

我现在的方法是对gem中的validateForm函数稍作修改.当它查找要验证的字段时,只会抓取可见的元素:

form.find(':input:enabled:visible[data-validate]').each(function() 
Run Code Online (Sandbox Code Playgroud)

所以我改变了这个:

form.find(':input:enabled[data-validate]').each(function() 
Run Code Online (Sandbox Code Playgroud)

这似乎有效.有没有更好的办法?

当用户纠正错误时,我无法重新验证隐藏字段.

ruby-on-rails client-side-validation

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