小编Kim*_*bel的帖子

避免功能内的装箱/拆箱

对于数字密集型代码,我编写了一个具有以下签名的函数:

def update( f: (Int,Int,Double) => Double ): Unit = {...}
Run Code Online (Sandbox Code Playgroud)

但是,因为Function3不是专门的,所以每个应用程序都会f在装箱/取消装箱3个参数和结果类型.

我可以使用一个特殊的更新程序类:

trait Updater {
  def apply( i: Int, j: Int, x: Double ): Double
}
def update( f: Updater ): Unit = {...}
Run Code Online (Sandbox Code Playgroud)

但调用很麻烦(和java-ish):

//with function
b.update( (i,j,_) => if( i==0 || j ==0 ) 1.0 else 0.5 )

//with updater
b.update( new Updater {
  def apply( i: Int, j: Int, x: Double ) = if( i==0 || j ==0 ) 1.0 else 0.5 …
Run Code Online (Sandbox Code Playgroud)

macros boxing scala

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

红宝石的"任何?" 和所有?" 空数组和哈希值的方法行为

首先,我在关于这些方法的文档中发现了两篇有用的文章:

all?:将集合的每个元素传递给给定的块.如果块永远不返回false或nil,则该方法返回true.

any?:将集合的每个元素传递给给定的块.如果块返回false或nil以外的值,则该方法返回true.

但是在空数组和散列的情况下,我得到了:

irb(main):004:0> [nil, "car", "bus"].all?
=> false
irb(main):005:0> ["nil", "car", "bus"].all?
=> true
irb(main):006:0> [].all?
=> true
irb(main):007:0> ["nil", "car", "bus"].any?
=> true
irb(main):008:0> [nil, "car", "bus"].any?
=> true
irb(main):009:0> [nil].any?
=> false
irb(main):010:0> [].any?
=> false
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么空数组给我falseany?方法和true情况下all?

ruby enumeration ruby-on-rails

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

我怎样才能最好地解决sbt中"可能不兼容的依赖版本"问题

我的项目发出以下警告:

[warn] Potentially incompatible versions of dependencies of {file:/some/path/}default-5bae4a:
[warn]    org.scala-lang: 2.9.2, 2.9.1
Run Code Online (Sandbox Code Playgroud)

我有以下依赖项:

libraryDependencies ++= Seq(
  "io.spray"            %   "spray-can"     % "1.0-M3",
  "io.spray"            %   "spray-routing" % "1.0-M3",
  "io.spray"            %   "spray-testkit" % "1.0-M3",
  "io.spray"            %%  "spray-json"    % "1.2.3" cross CrossVersion.full,
  "com.typesafe.akka"   %   "akka-actor"    % "2.0.3",
  "org.mongodb"         %% "casbah"         % "2.4.1",
  "com.novus"           %% "salat"          % "1.9.1",
  "org.specs2"          %%  "specs2"        % "1.12.2" % "test",
  "org.mockito"         % "mockito-all"     % "1.9.0" % "test"
)
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚如何摆脱org.scala-lang 2.9.1依赖,但它并不像我想象的那么容易.我错过了什么伎俩?

scala sbt scala-2.9

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

依赖类型语言最适合"真实世界"编程?

哪些依赖类型的编程语言可用于实际应用程序开发?

这些是我认为重要的一些要点:

  • 文件
  • 示例程序
  • 标准库
  • 或至少一个易于使用的外国功能界面
  • 一个使用该语言进行现实世界任务的人群
  • 工具支持

programming-languages dependent-type

12
推荐指数
3
解决办法
1646
查看次数

Scala中的_._ 1和_ ++ _是什么意思(两个独立的操作)?

我的解释_._1是:

_= wildcard parameter _1=方法参数列表中的第一个参数但是当.它与它表示什么一起使用时?

这是它的用法:

.toList.sortWith(_._1 < _._1)
Run Code Online (Sandbox Code Playgroud)

对于这个声明:

_++_
Run Code Online (Sandbox Code Playgroud)

我迷路了.是以某种方式连接两个通配符参数?这是它的用法:

.reduce(_++_)
Run Code Online (Sandbox Code Playgroud)

如果上面的代码可以变得更加冗长并删除任何含义,我会特别感兴趣,这样我才能更好地理解它?

scala

12
推荐指数
3
解决办法
9291
查看次数

Scala中的结构化键入不适用于Double?

我正在尝试执行以下代码:

def sum(e: { def *(x: Double): Double}) = e * 2.0
Run Code Online (Sandbox Code Playgroud)

问题是,这不适用于任何数字类:

sum(20.0)
<console>:9: error: type mismatch;
 found   : Double(10.0)
 required: AnyRef{def *(x: Double): Double}
              algo(10.0)

sum(10)
<console>:9: error: type mismatch;
 found   : Int(10)
 required: AnyRef{def *(x: Double): Double}
              algo(10)
Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?

scala

11
推荐指数
2
解决办法
411
查看次数

如何使用until循环将不可变的Seq转换为可变的seq

我试图返回一个带有until循环的可变序列,但是我有一个不可变的seq返回(0到nbGenomes):

 def generateRandomGenome(nbGenomes:Int): IndexedSeq[GenomeDouble]={
    return ((0 until nbGenomes toSeq).map{e => generateRandomGenome}) 
  }
Run Code Online (Sandbox Code Playgroud)

返回编译错误:

found   : scala.collection.immutable.IndexedSeq[org.openmole.tools.mgo.mappedgenome.genomedouble.GenomeDouble]
 required: scala.collection.mutable.IndexedSeq[org.openmole.tools.mgo.mappedgenome.genomedouble.GenomeDouble]
    return ((0 until nbGenomes toSeq).map{e => generateRandomGenome}) 
Run Code Online (Sandbox Code Playgroud)

我如何强制until循环返回一个可变的seq?谢谢scala社区!

scala mutable immutability sequence

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

Scala泛型具有<:和多个特征

Java的一个几乎未知的特性是这种泛型语法:

public class Baz<T extends Foo & Bar> {}
Run Code Online (Sandbox Code Playgroud)

我想在Scala中做同样的事情,但我不知道怎么做,有人可以给我一个语法吗?

我以前:

class MongoObject[T <: CaseClass]
Run Code Online (Sandbox Code Playgroud)

现在我需要:

class MongoObject[T <: IdentifiableModel & CaseClass]
Run Code Online (Sandbox Code Playgroud)

或至少类似的东西

谢谢

generics scala traits

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

从两个字符串中创建一个唯一的哈希

任何人都可以想到一种方法来从两个字符串中创建一个唯一的哈希?确保的东西:

hash(string1,string2) = hash(string2,string1).

我总是可以在地图中的两个不同值下存储相同的引用,但我想:必须有更好的方法......

algorithm scala

10
推荐指数
4
解决办法
4150
查看次数

垂直制表符的字符文字?

如何在Scala中为垂直制表符('\ v',ASCII 11)编写字符文字?

'\v'不起作用.(无效的转义字符) '\11'应该是它,但是......

scala> '\11'.toInt
res13: Int = 9
Run Code Online (Sandbox Code Playgroud)

但9是普通标签('\ t')的ASCII码.那里发生了什么?

编辑:这工作并产生正确的字符,但我仍然想知道文字的语法.

val c:Char = 11
Run Code Online (Sandbox Code Playgroud)

scala

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