相关疑难解决方法(0)

什么是Scala中的清单,什么时候需要它?

从Scala 2.7.2开始,有一些叫做ManifestJava类型擦除的解决方法.但是,如何Manifest确切地工作以及为什么/何时需要使用它?

Jorge Ortiz 的博客文章Manifests:Reified Types解释了其中的一些内容,但它没有解释如何将它与上下文界限一起使用.

那么ClassManifest,有什么区别Manifest

我有一些代码(一个更大的程序的一部分,不能轻易地包含在这里),它有关于类型擦除的一些警告; 我怀疑我可以通过使用清单解决这些问题,但我不确定如何解决.

scala manifest

130
推荐指数
3
解决办法
3万
查看次数

为什么我不能创建泛型类型的数组?

这不起作用:

def giveArray[T](elem:T):Array[T] = {
    new Array[T](1)
  }
Run Code Online (Sandbox Code Playgroud)

但这样做:

  def giveList[T](elem:T):List[T] = {
    List.empty[T]
  }
Run Code Online (Sandbox Code Playgroud)

我确信这是一个非常基本的东西,我知道Arrays在Scala中表现得有点不寻常.

有人可以向我解释如何创建这样一个数组,以及为什么它首先不起作用?

arrays scala

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

如何转换某些数组元素的功能方法?

我有一个带有复选框的项目列表的Scala应用程序,以便用户选择一些,然后单击一个按钮将它们向上移动一个位置(左).我决定编写一个函数来移动某些符合给定谓词的任意类型的元素.所以,如果你有这些元素:

a b c D E f g h I
Run Code Online (Sandbox Code Playgroud)

并且谓词是"大写字符",该函数将返回:

a b D E c f g I h
Run Code Online (Sandbox Code Playgroud)

简而言之,符合谓词的任何连续元素序列都与其左侧的单个元素交换.

我想出了以下丑陋的命令式实现.我希望看到一个很好的,希望可读的功能解决方案.

def shiftUp[T](a:Array[T], shiftable: T => Boolean) = {
    val s = new Array[T](a.length)
    var i = 0
    var j = 0
    while(i < a.length)
    {
        if(!shiftable(a(i)) && i < a.length - 1 && shiftable(a(i+1)))
        {
            var ii = i + 1
            while(ii < a.length && shiftable(a(ii)))
            {
                s(j) = a(ii)
                ii = ii+1
                j = j+1
            }
            s(j) …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

7
推荐指数
2
解决办法
2350
查看次数

标签 统计

scala ×3

arrays ×1

functional-programming ×1

manifest ×1