我正在使用一个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)
我收到这条消息:
预期的标识符,但找到'类型'.
我该如何解决这个问题?
我猜这已经出现过,但我找不到相关的问题.
我想知道是否有办法防止在Rails视图中呈现注释(除了删除它们).我在视图中的评论主要是针对开发人员的,我不希望用户能够在html中阅读它们.我可以设置一些删除所有注释的渲染选项吗?
我正在使用haml,如果这很重要的话.
我试图在F#中编写列表解析并且无法编译它:
[for x in xs do
let y = f(x)
when g(y) -> y]
Run Code Online (Sandbox Code Playgroud)
有没有办法在列表理解中保存中间计算?我如何重写这个列表理解,以便编译?
我正在编写一个需要启动多个应用程序的集成测试。这些应用程序之一是名为 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 应用程序而不立即退出?有更好的方法来启动应用程序吗?
我正在Heroku上运行两个Rails 3.1.0应用程序.其中一个应用程序仅用于暂存目的.我使用Devise进行身份验证,使用sendgrid来处理电子邮件.
当用户在主应用程序上注册时,确认电子邮件似乎已正常发送.但是,当用户单击电子邮件中的确认链接时,它们将被发送到登台应用程序.电子邮件中的链接是confirmation_url,它似乎没有硬编码到我的应用程序中的任何内容.
有关为何可能发生这种情况的任何想法或有关如何进行调试的建议?
我使用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) 我已经从scala控制台中启动了我的应用程序:
scala> import play.core.StaticApplication
scala> new StaticApplication(new java.io.File("."))
Run Code Online (Sandbox Code Playgroud)
我得到警告,默认数据库需要进化.如何从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
对于我的示例,我将使用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) 我正在尝试学习F#计算表达式.一般来说,零成员的目的是什么?
它对序列的定义是什么?
它对异步工作流程的定义是什么?
我正在尝试使用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) 我在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)
这似乎有效.有没有更好的办法?
当用户纠正错误时,我无法重新验证隐藏字段.