小编non*_*com的帖子

Scala导入类错误

Scala导入有问题.我有两个类的导入问题.第一个:

package org.world
import org.gui.tokens.Token


object WorldObject {

}

abstract class WorldObject[A <: WorldObject[_]](var xPos: Float, var yPos: Float) {
  def x = xPos
  def y = yPos

  def token: Token
             ^^^^^
  def move(dx: Float, dy: Float) {// : A = new A(x + dx, y + dy)
    xPos += dx // = x + dx
    yPos += dy
  }
}
Run Code Online (Sandbox Code Playgroud)

第二个:

package org.gui.tokens

object Token {

}
Run Code Online (Sandbox Code Playgroud)

问题是返回类型def token: Token以红色加下划线,并带有错误说明

找不到:键入令牌

所有课程都很好.其他课程没有类似的问题.我不记得Java中的这种情况,autoimport总能完美运行.这里只是import org.gui.tokens.Token一遍WorldObject又一遍地在文件中重复添加语句......为什么会这样?我能做些什么呢?

import scala class

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

Scala子案例类param名称与父案例类param名称冲突

我们假设我们有以下两个类:

abstract case class MyParent(param: Int) {
   // ...
}

case class MyChild(param: Int) extends MyParent(param: Int) {
   // ...          ^^^^^                        ^^^^^
}
Run Code Online (Sandbox Code Playgroud)

使它们成为案例类导致两个param使用位置都出错,这表示它需要override修改器来覆盖父类的值.这对我来说很奇怪..为什么我必须在这里发明其他的param名称..为什么这个事情的顺序是强制执行的?利润在哪里?

parameters scala case-class

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

Scala子类继承父类的特征?

为什么我有:

trait T {
  def method(a: Int)
}

class A extends T {
  //...
}

class B extends A {
  //...
}
Run Code Online (Sandbox Code Playgroud)

那时当我这样做:

//...
val b = new B
b.method(15)
//...
Run Code Online (Sandbox Code Playgroud)

将method()被认为是未定义对于B?为什么我必须明确说出来

class B extends A with T
Run Code Online (Sandbox Code Playgroud)

为了获得我想要的东西?是不是继承了父类的特征?如果他们可以实现父母自己定义的方法的很大一部分,怎么会这样呢?如果是这样,那么论证是什么?

inheritance scala

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

Scala - 一种不可靠的隐式方法正在弄乱整个CanBuildFrom事物

我有以下代码:

trait DBO
trait BSONWriter[S]

trait HasWriter {
   implicit def writer[T <: BSONWriter[_ <: DBO]]: T
}
Run Code Online (Sandbox Code Playgroud)

一切都很好!除了当我把它混合到我的时候objects,map所有集合的方法以及隐含CanBuildFrom在所有这些对象及其伴随类中使用的其他东西现在显示错误消息,如:

  • 模糊隐含值:特征中的方法编写器保存类型[T <:reactivemongo.bson.handlers.BSONWriter [_ <traits.DBO]] => T和方法canBuildFrom在类型为[A] => scala的对象缓冲区中. collection.generic.CanBuildFrom [scala.collection.mutable.Buffer.Coll,A,scala.collection.mutable.Buffer [A]]匹配预期类型scala.collection.generic.CanBuildFrom [scala.collection.mutable.Buffer [models. world.Star],traits.IsInWorld with org.bundlelib.traits.Groupable {def asBSON:reactivemongo.bson.AppendableBSONDocument},That]

现在我不明白,为什么?混淆隐式方法的签名是不同的!我该如何防止这种情况?

types scala implicit

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

Play 2.0模板 - 使用字符串然后将其呈现为HTML

在Play 2.0中,使用Scala,我想创建一个带有html片段并将每一行放入<div>块中的工厂.我已经尝试了几种我能想到的方法,但它总是出现在String/Html的类型错误或者在页面上写入html代码,就好像它是文本一样.有谁知道如何做到这一点?

更新:

我希望看到的是这样的:

@factories.f_div_lines {
   <a href="/aabbcc"> abc </a>
   <a href="/ccbbdd"> cbd </a>
   <a href="/bbddee"> bde </a>
   <a href="/ddeeff"> def </a>
   <a href="/eeffgg"> efg </a>
}
Run Code Online (Sandbox Code Playgroud)

并且所有<a href>标签都被<div>'s 包围

scala playframework-2.0

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

Scala - 如何避免关闭?

将函数作为参数传递给类构造函数时如何避免闭包?

我的类构造函数接受一个类型的函数() => Unit.在程序工作过程中,我想从一个可变映射中访问一个键值对,这个映射在使用构造函数创建对象时没有定义

val cats = scala.collection.mutable.Map[String, Cat]

class Trigger(period: Long, f: () => Unit) {

  //pseudocode:
  when period passes, f()

}

someWonderfulObject += new Trigger (1000, () => cats("Hershy").meow)

cats += ("Hershy" -> Cat())
Run Code Online (Sandbox Code Playgroud)

然后,当奇妙的物体触发它的触发器时,我得到的错误是没有像"Hershy"那样的键.我的结论是,显然,这是由于在没有"Hershy"的状态下f传递给Triggercons被关闭.

我现在的问题是 - 如何避免Scala在这里使用闭包而是看看实际的状态cats?

更新:

"当期间通过"的代码是这样的:

def update(tpf: Float) {
  timePassed += tpf
  if(timePassed > period) f()
}
Run Code Online (Sandbox Code Playgroud)

该tpf值来自上面,所以在这里这一切似乎确定.

更新:

我发现问题出在另一个完全无关的地方,我把所有这些东西的容器弄糊涂了.然而,谢谢大家,我从答案中学到了一些东西.

closures scala

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

Scala - List.isDefinedAt()表现得很奇怪

据我所知,该isDefinedAt方法应该像类型contains方法一样工作.但奇怪的是,它的行为有所不同 - 它不会检查重复出现的元素.

val randomizer = new Random

def next(acc: List[Int], n: Int): List[Int] = {
   if(n > 0) {
      val r = randomizer.nextInt(15)
      println("generating, r=" + r + " is defined=" + acc.isDefinedAt(r))
      if(!acc.isDefinedAt(r)) next(r :: acc, n - 1) // check for NO coincidence
      else next(acc, n)
   } else acc
}

println("indices = " + next(List[Int](), 6))
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用Sets而不是列表,但是,为什么它会像这样?

我得到的输出就像

generating, r=8 is defined=false
generating, r=13 is defined=false
generating, r=2 is defined=false
generating, r=8 is …
Run Code Online (Sandbox Code Playgroud)

scala list

0
推荐指数
2
解决办法
554
查看次数

CoffeeScript - 将args传递给超级构造函数的问题

我有以下CoffeeScript代码:

planet = new Planet p5, {x: 100, y: 100, diameter: 20}
Run Code Online (Sandbox Code Playgroud)

和其他地方:

class GameObject
  constructor: (@p5, @x, @y) ->
    @selected = false

class Planet extends GameObject
  constructor: (p5, opts) ->
    super (p5 opts.x opts.y)
    @diameter = opts.diameter
Run Code Online (Sandbox Code Playgroud)

而对于super它说的线:

未捕获的TypeError:对象#<Object>的属性"x"不是函数

当它只是:它是好的:

class Planet
  constructor: (p5, opts) ->
    @x = opts.x
    @y = opts.y
    @diameter = opts.diameter
    @selected = false
Run Code Online (Sandbox Code Playgroud)

即在让它成为一个更通用的孩子之前GameObject...我已经尝试了一些重新安排以使其工作,但所有都保留.不确定它是否与CoffeeScript或JavaScript有关.官方网站上的"尝试CoffeScript"事情在这里没有发现任何错误.浏览器是Chrome ...这里有什么问题,我该如何克服这个问题?

javascript coffeescript

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