小编vic*_*aba的帖子

F-bounded类型和方法,在参数和返回站点具有类型参数

我有一个F-bounded类型,我的目标是创建一个类型参数化方法,以便能够重用它.这是示例代码:

trait FType {
  type ThisType <: FType

  def deepCopy(): ThisType

}

class ConcreteType extends FType {

  override type ThisType = ConcreteType

  override def deepCopy(): ConcreteType = this

}

class ConcreteType2 extends FType {

  override type ThisType = ConcreteType2

  override def deepCopy(): ConcreteType2 = this

}

object FType {

  def deepCopy[T <: FType](_type: T): T = {
    _type.deepCopy()
  }

/*  def deepCopy2(c: ConcreteType2): ConcreteType2 = {
    c.deepCopy()
  }*/

  def main(args: Array[String]): Unit = {
    //deepCopy2(new ConcreteType2)
  }

}
Run Code Online (Sandbox Code Playgroud)

但是,代码无法编译.编译器抛出此错误:

Error:(29, …
Run Code Online (Sandbox Code Playgroud)

scala path-dependent-type f-bounded-polymorphism

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

Scala,虚数(数字)的简单表示法

想象一下,我在 Scala 中有类 Imaginary(x) 和类 Real(y)。有没有办法做 ComplexNumber = 3 + 2i 而不是做 ComplexNumber = Real(3) + Imaginary(2) ?

谢谢。

scala numbers notation

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

Scala语法错误?

我在scala语法中遇到了一些我认为是bug/no-syntax-sense的东西,但我更喜欢在报告之后将其发布在此处,因为我可能错了.

控制器类:

package some

import java.awt.event.ActionListener
import java.awt.event.ActionEvent

class ItemController extends ActionListener {

  val NEW_ITEM = "new item"
  val UPDATE_ITEM = "update item"

  private val newItem = new ItemNew

  override def actionPerformed(e: ActionEvent) = {

  }

  def create(view: String) = {

    view match {
      case NEW_ITEM => {
        newItem eraseForm //Here eclipse says "Unit does not take parameters".
        newItem setVisible true
      }

      case UPDATE_ITEM =>
    }

  }

}
Run Code Online (Sandbox Code Playgroud)

视图类

  package some

  import scala.collection.mutable.HashMap
  import javax.swing.JPanel
  import java.awt.GridLayout
  import javax.swing.JFrame
  import …
Run Code Online (Sandbox Code Playgroud)

syntax scala

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

以功能方式遍历树

我已经在Scala中实现了一个基本的可变树,我想以一种功能性的方式遍历它以便搜索元素,但是我不知道如何实现它。我还希望该算法尽可能地尾部递归。

树是具有值和也是树的叶子列表的结构。

任何帮助,将不胜感激。

这是我的代码(专注于getOpt方法):

package main

import scala.collection.mutable.ListBuffer

sealed trait Tree[Node] {

  val node: Node

  val parent: Option[Tree[Node]]

  val children: ListBuffer[Tree[Node]]

  def add(n: Node): Tree[Node]

  def size: Int

  def getOpt(p: (Node) => Boolean): Option[Tree[Node]]

  override def toString = {
    s"""[$node${if (children.isEmpty) "" else s", Children: $children"}]"""
  }
}

case class ConcreteTree(override val node: Int) extends Tree[Int] {

  override val children = ListBuffer[Tree[Int]]()

  override val parent: Option[Tree[Int]] = None

  override def add(n: Int): ConcreteTree = {
    val newNode = new ConcreteTree(n) …
Run Code Online (Sandbox Code Playgroud)

algorithm tree functional-programming scala data-structures

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