小编Kev*_*ith的帖子

GWT中的硬刷新

使用Google Web Toolkit,我想编写相当于a的代码hard refresh (control + F5).

我不相信(或知道)GWT Window.Location是否有效.

import com.google.gwt.user.client.Window.Location;

Window.Location = currentPage; // I don't think it'll be hard refresh
Run Code Online (Sandbox Code Playgroud)

java gwt web-applications

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

Hibernate只读事务

Hibernate 文档显示了这个例子:

session = sessionFactory.openSession();
session.beginTransaction();
List result = session.createQuery( "from Event" ).list();
for ( Event event : (List<Event>) result ) {
    System.out.println( "Event (" + event.getDate() + ") : " + 
        event.getTitle() );
}
session.getTransaction().commit();
session.close();
Run Code Online (Sandbox Code Playgroud)

为什么有必要执行session.getTransaction().commit()即使事件列表只是打印出来?

orm hibernate

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

JsResult - Monad还是Appative?

我认识一个之间的区别Monad,并ApplicativeflatMap可用的Monad,但不是Applicative.

如果这是真的,我对这些Scala Play JSON 文档感到困惑:

所以有趣的是JsResult [A]是一个monadic结构,可以用于这种结构的经典函数:

flatMap [X](f:A => JsResult [X]):JsResult [X]

等等

但是,然后文件继续说:

请注意,JsResult [A]不仅仅是Monadic而且是Applicative,因为它累积了错误.这个累积的特性使得JsResult [T]使得用于理解不是很好,因为你只会得到第一个错误,而不是全部错误.

因为,据我所知,一个for-comprehension是语法糖flatMap,怎么可能JsResultApplicativeMonad

monads scala applicative playframework-json

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

找出用于制作JAR的Scala版本

我正在试图找出用于编译的Scala版本A.jar.我有两个版本:一个来自我的ivy2 repo,另一个来自Maven.

运行后jar -xf A.jar,我grepped为scalaversion,但一无所获:

$grep -ri scala *
$grep -ri version *
Run Code Online (Sandbox Code Playgroud)

因此,基于解压缩*JAR,如何确定使用哪个版本的Scala进行编译?

*解压缩=运行 java xf <name of jar>

scala jar

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

"应启用更高的金属类型"警告

在以下代码中(来自Scala中的Functional Programming):

trait Functor[F[_]] {
  def map[A,B](fa: F[A])(f: A => B): F[B]
}

trait Monad[F[_]] {
  def unit[A](a: => A): F[A]
  def flatMap[A,B](ma: F[A])(f: A => F[B]): F[B]
  def apply[A](a: => A): F[A]
}
Run Code Online (Sandbox Code Playgroud)

我看到以下警告:

[warn] C:\...\Monad.scala:3: higher-kinded type should be enabled
[warn] by making the implicit value scala.language.higherKinds visible.
[warn] This can be achieved by adding the import clause 'import scala.language.higherKinds'
[warn] or by setting the compiler option -language:higherKinds.
[warn] See the Scala docs for value scala.language.higherKinds …
Run Code Online (Sandbox Code Playgroud)

scala

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

了解Hibernate的标准#setMaxResults

文件说:

Criteria setMaxResults(int maxResults)
>Set a limit upon the number of objects to be retrieved.
Run Code Online (Sandbox Code Playgroud)

假设我有以下内容Criteria:

Criteria criteria = createCriteria(); // creates criteria for MY_TABLE entity
criteria.list().length; // let's say there's a million records in this table
Run Code Online (Sandbox Code Playgroud)

添加criteria.setMaxResults(1)只会返回一行吗?或者,它仍将返回100万行,但选择其中一行?

当针对我的Oracle DB运行类似于上面的代码示例的查询时,我看到... ROWNUM < 2正在生成SQL.

但是,当我查看ROWNUM常见问题时,我不明白是否ROWNUM检索记录之前或之后应用.我希望"之前"是有效的,而"之后"则不适用于大的结果集.

在从数据库中选择记录并在执行ORDER BY子句之前评估ROWNUM.

java sql oracle hibernate

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

找出类型同义词的类型

我在Haskell中创建了一个类型的同义词:

Prelude> type Foo a = [a]
Run Code Online (Sandbox Code Playgroud)

然后,我检查了它的类型:

Prelude> :t [5] :: Foo Integer
[5] :: Foo Integer :: Foo Integer
Run Code Online (Sandbox Code Playgroud)

当然我知道这Foo a[a]我写的那个类型的同义词.

但是,如果我正在消费一个返回的图书馆,Foo Integer我怎么知道它是什么Foo

我尝试:t Foo没有成功.

haskell

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

在`newtype a`上使用`a`的函数

假设我有以下内容newtype:

newtype Foo = Foo Integer deriving (Eq, Show)

有没有简洁的方法来添加两个Foo:

(Foo 10) + (Foo 5) == Foo 15

或获得最大值:

max (Foo 10) (Foo 5) == Foo 5

我很好奇是否可以轻松使用afor的功能newtype a而不是:

addFoo :: Foo -> Foo -> Foo
addFoo (Foo x) (Foo y) = Foo $ x + y
Run Code Online (Sandbox Code Playgroud)

haskell newtype

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

用Singleton Type理解`apply`和`unapply`

鉴于:

import shapeless._
import syntax.singleton._

case class Foo(a: String, one: Witness.`1`.T)
Run Code Online (Sandbox Code Playgroud)

为什么Foo.apply _Foo.unapply _有不同的特征,即Int(1)Int分别是多少?

scala> Foo.apply _
res5: (String, Int(1)) => Foo = <function2>

scala> Foo.unapply _
res6: Foo => Option[(String, Int)] = <function1>
Run Code Online (Sandbox Code Playgroud)

scala shapeless

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

解码无形标记类型

鉴于以下关于亚扪人:

@ import $ivy.`io.circe::circe-core:0.9.0` 

@ import $ivy.`io.circe::circe-generic:0.9.0`                   

@ import $ivy.`com.chuusai::shapeless:2.3.3` 

@ import shapeless.tag 
import shapeless.tag

@ trait Foo 
defined trait Foo

@ import io.circe._, io.circe.generic.semiauto._ 
import io.circe._, io.circe.generic.semiauto._

@ import shapeless.tag.@@ 
import shapeless.tag.@@
Run Code Online (Sandbox Code Playgroud)

然后,我尝试定义通用标记类型解码器:

@ implicit def taggedTypeDecoder[A, B](implicit ev: Decoder[A]): Decoder[A @@ B] = 
    ev.map(tag[B][A](_)) 
defined function taggedTypeDecoder
Run Code Online (Sandbox Code Playgroud)

它在明确拼写时有效String @@ Foo:

@ val x: String @@ Foo = tag[Foo][String]("foo") 
x: String @@ Foo = "foo"

@ implicitly[Decoder[String @@ Foo]] 
res10: Decoder[String @@ Foo] = io.circe.Decoder$$anon$21@2b17bb37
Run Code Online (Sandbox Code Playgroud)

但是,在定义类型别名时:

@ …
Run Code Online (Sandbox Code Playgroud)

scala shapeless circe

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