在AngularJS中移动,我在// ERROR下面的行中收到JavaScript错误.
我为什么要这样Cannot set property 'show' of undefined?
<html ng-app>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js">
</script>
<div ng-controller='DeathrayMenuController'>
<button ng-click='toggleMenu()'>Toggle Menu</button>
<ul ng-show='menuState.show'>
<li ng-click='stun()'>Stun</li>
<li ng-click='disintegrate()'>Disintegrate</li>
<li ng-click='erase()'>Erase from history</li>
</ul>
<div/>
<script>
function DeathrayMenuController($scope) {
$scope.menuState.show = false; // ERROR HERE
$scope.toggleMenu = function() {
$scope.menuState.show = !$scope.menuState.show;
};
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 使用play,我的控制器调用Foo服务,一个对象.此对象仅使用val's' immutable data structures,将由多个客户端调用.
当我的Controller调用Foo.doQuery()多个线程时,会发生什么?
如果客户端1拨打电话,Foo.doQuery()客户2的呼叫是否Foo.doQuery()必须等待?
我很好奇我是否应该简单地为每个实例创建一个新类Foo,但是我想知道val在多线程环境中使用Scala单例时会发生什么.
通过这篇关于Parser Combinators的信息性很好的文章阅读,我看到了这段代码:
class DisParser[+A](left: Parser[A], right: Parser[A]) extends Parser[A] {
def apply(s: Stream[Character]) = left(s) match {
case res: Success => res
case _: Failure => right(s)
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译此代码时,我得到:
Parser.scala:19: error: class Success takes type parameters
case res: Success => res
^
one error found
Run Code Online (Sandbox Code Playgroud)
鉴于签名Parser:
case class Success[+A](value: A, rem: Stream[Character]) extends Result[A]
Run Code Online (Sandbox Code Playgroud)
如何更改case res: Success => res线条以提供Success正确的类型参数?
我正在为Java类创建Reads并Writes使用Play Framework的JSON库.
我的一个类有一个抽象类字段.
ConcreteObj.java
public class ConcreteObj {
private AbstractObj someField;
public ConcreteObj(AbstractObj someField) {
this.someField = someField;
}
public AbstractObj getSomeField() { return this.someField };
Run Code Online (Sandbox Code Playgroud)
...
读写
implicit val ConcreteObjReads: Reads[ConcreteObj] =
(JsPath \ "someField").read[AbstractObj].map{x: AbstractObj => new ConcreteObj(x)}
implicit val ConcreteObjWrites: Writes[ConcreteObj] =
(JsPath \ "someField").write[AbstractObj].contramap{x: ConcreteObj => x.getField}
Run Code Online (Sandbox Code Playgroud)
然而,下一步,创建一个Reads[AbstractObj],对我来说没有意义,因为抽象类无法实例化.
我想这Writes[AbstractObj]看起来像:
implicit val AbstractObjWrites: Writes[AbstractObj] =
(JsPath \ "otherField").write[String].contramap{x: AbstractObj => x.getOtherField}
Run Code Online (Sandbox Code Playgroud)
但是Reads[AbstractObj]呢?
借助Play框架的JSON库,我怎么可以创建一个Reads和Writes对于没有领域一个Java枚举?
public enum EnumNoFields {
RED,
WHITE,
BLUE
}
implicit val EnumNoFieldsReads: Reads[EnumNoFields] = ?
implicit val EnumNoFieldsWrites: Writes[EnumNoFields] = ?
Run Code Online (Sandbox Code Playgroud) 是否应该将Maven clean目标应用于每个构建作为避免过时CLASS文件的最佳实践?或者也许总是使用clean是不必要的,因为Maven足够聪明,知道哪些源代码需要根据变化重新编译?
Gareth Davis指出clean在重新命名CLASS文件后忘记运行的潜在危险- /sf/answers/326377551/.
例:
main我正在研究是否缺少clean会改善共享目录中来宾VM上的构建性能.但是,我并不知道不总是clean首先调用该步骤的所有后果.
在Scala 2.10.4中,给出以下类:
scala> class Foo {
| val x = true
| val f = if (x) 100 else 200
| }
defined class Foo
Run Code Online (Sandbox Code Playgroud)
以下两个例子对我有意义:
scala> new Foo {}.f
res0: Int = 100
scala> new Foo { override val x = false}.f
res1: Int = 200
Run Code Online (Sandbox Code Playgroud)
但是,为什么这个电话不会回来100?
scala> new Foo { override val x = true }.f
res2: Int = 200
Run Code Online (Sandbox Code Playgroud) 鉴于fHaskell和Scala中的以下实现:
Prelude> let f x y = x == y
Prelude> :t f
f :: Eq a => a -> a -> Bool
Run Code Online (Sandbox Code Playgroud)
斯卡拉:
scala> trait Equal[A] { def ===(x: A, y: A): Boolean }
defined trait Equal
scala> implicit val equalsInt = new Equal[Int] {
| def ===(x: Int, y: Int):Boolean = (x == y)
| }
equalsInt: Equal[Int] = $anon$1@3daa422a
scala> def f[A : Equal](x: A, y: A): Boolean =
| implicitly[Equal[A]].===(x, y)
f: [A](x: A, …Run Code Online (Sandbox Code Playgroud) 取自typelevel/kind-projector,它们之间的区别是什么:
// partially-applied type named "IntOrA"
type IntOrA[A] = Either[Int, A]
Run Code Online (Sandbox Code Playgroud)
和
// type projection implementing the same type anonymously (without a name).
({type L[A] = Either[Int, A]})#L
Run Code Online (Sandbox Code Playgroud)
?
它们是等价的吗?
我试图比较a String和String期待True.
Idris> String == String
Can't find implementation for Eq Type
Run Code Online (Sandbox Code Playgroud)
然后我预计False在比较a String和a时Bool.
Idris> String /= Bool
Can't find implementation for Eq Type
Run Code Online (Sandbox Code Playgroud)
我错过了import吗?