Tag: scala

一个范围可以在Scala中匹配吗?

是否有可能在Scala中匹配一系列值? 例如: val t = 5 val m = t match { 0 until 10 => true _ => false } 如果t在0和10之间, m将是true ,否则为假。 这一点当然不起作用,但有什么办法可以达到这样的效果吗?

如何在Scala中定义一个订单?

有val hm: HashMap[org.joda.time.DateTime, MyType]我想通过hm.keys.min和hm.keys.max分别hm.keys.min集合的第一个和最后一个DateTime ,但是编译器显示No implicit Ordering defined for org.joda.time.DateTime 。 如何定义这种sorting(隐式和显式选项都很有趣)?

=和:=在Scala中有什么区别?

=和:=在Scala中有什么区别? 我已经广泛search“scala colon-equals”,但是找不到任何明确的。

Scalamacros的静态返回types

所以我有这个macros: import language.experimental.macros import scala.reflect.macros.Context class Foo class Bar extends Foo { def launchMissiles = "launching" } object FooExample { def foo: Foo = macro foo_impl def foo_impl(c: Context): c.Expr[Foo] = c.Expr[Foo](c.universe.reify(new Bar).tree) } 我已经说过三次了,我想让foo返回一个Foo ,但是我可以做以下事情(在2.10.0-RC3中): scala> FooExample.foo res0: Bar = Bar@4118f8dd scala> res0.launchMissiles res1: String = launching 同样的事情发生,如果我删除c.Expr上的types参数。 如果我真的想要确保谁打电话给foo看不到他们得到一个Bar ,我必须在树本身添加一个types归属。 这实际上非常棒,例如,我可以将某个macros指向某种types的模式,并使用表示词汇表中的词的成员方法创build一些Vocabulary类的匿名子类,这些方法将在返回的对象上提供。 不过,我想明白我在做什么,所以我有几个问题。 首先, foo方法实际返回的types是什么? […]

println与Scala中的System.out.println

我一直认为Predef.println只是System.out.println一个快捷方式,但显然我错了,因为它似乎并没有使用System.out 。 为什么? 我该如何做Scala中System.out的“redirect”? scala> val baos = new java.io.ByteArrayOutputStream baos: java.io.ByteArrayOutputStream = scala> val ps = new java.io.PrintStream(baos) ps: java.io.PrintStream = java.io.PrintStream@6c5ac4 scala> System.setOut(ps) scala> println("hello") hello scala> new String(baos.toByteArray) res2: java.lang.String = "" scala> System.out.println("hello") scala> new String(baos.toByteArray) res7: java.lang.String = "hello "

是选项,并命名默认参数如油和水在斯卡拉API?

我正在研究一个Scala API(顺便说一下,Twilio),其中操作有相当多的参数,其中许多参数都有合理的默认值。 为了减less键入和增加可用性,我决定使用具有命名参数和默认参数的case类。 例如TwiML Gather动词: case class Gather(finishOnKey: Char = '#', numDigits: Int = Integer.MAX_VALUE, // Infinite callbackUrl: Option[String] = None, timeout: Int = 5 ) extends Verb 这里感兴趣的参数是callbackUrl 。 这是唯一真正可选的参数,如果没有提供任何值,就不会应用任何值(这是完全合法的)。 我已经声明它是一个选项,以便在API的实现端使用monadic map例程,但这会给API用户带来一些额外的负担: Gather(numDigits = 4, callbackUrl = Some("http://xxx")) // Should have been Gather(numDigits = 4, callbackUrl = "http://xxx") // Without the optional url, both […]

经验估计大哦时间效率

背景 我想通过基准来评估库中某些方法的大噢performance。 我不需要精确度 – 只要certificateO(1),O(logn),O(n),O(nlogn),O(n ^ 2)或者更糟。 由于大哦表示上限,估计O(logn)是O(log logn)的东西不是问题。 现在,我正在考虑find最适合每个大数据的恒定乘数k(但是会将所有结果置顶),然后select最合适的大数。 问题 有没有更好的办法比我所做的更好? 如果是这样,他们是什么? 否则,任何人都可以指点我的algorithm来估计k为最佳拟合,并比较每条曲线如何适合数据? 注意和限制 鉴于迄今为止的意见,我需要澄清一些事情: 这需要自动化。 我不能“看”数据并做出判断。 我将要用多个n大小来对这些方法进行基准testing。 对于每个规模n ,我将使用经过validation的基准框架,提供可靠的统计结果。 事实上,我事先知道大多数将被testing的方法。 我的主要目的是为他们提供性能回归testing。 代码将用Scala编写,任何免费的Java库都可以使用。 例 这是我想测量的东西的一个例子。 我有这个签名的方法: def apply(n: Int): A 给定一个n ,它将返回一个序列的第n个元素。 在现有的实现中,这个方法可以有O(1),O(logn)或者O(n),而小的修改可以让它错误地使用次优的实现。 或者,更容易的,可以得到一些依赖于它的其他方法来使用它的次优版本。

有固定容量和自定义比较器的PriorityQueue实现吗?

相关问题: 具有固定大小的Java PriorityQueue 我如何使用PriorityQueue? 获取数组中n个最小元素的索引 Scala:有没有像我在Java中一样使用PriorityQueue的方法? 我有一个非常大的数据集 (超过500万个项目),我需要从它得到N个最大的项目。 最自然的方法是使用堆栈/优先级队列, 只存储前N个项目 。 对于JVM(Scala / Java),有几个优先级队列的实现,即: scala.collection.mutable.PriorityQueue java.util.PriorityQueue中 lucene.util.PriorityQueue 前两个是不错的,但他们存储所有的项目,在我的情况下给重要的内存开销。 第三(Lucene的实现)没有这样的缺点,但正如我从文档中看到的,它也不支持自定义比较器,这对我来说是无用的。 所以,我的问题是:有固定容量和自定义比较器的PriorityQueue实现吗? UPD。 最后,我根据Peter的回答创build了自己的实现: public class FixedSizePriorityQueue<E> extends TreeSet<E> { private int elementsLeft; public FixedSizePriorityQueue(int maxSize) { super(new NaturalComparator()); this.elementsLeft = maxSize; } public FixedSizePriorityQueue(int maxSize, Comparator<E> comparator) { super(comparator); this.elementsLeft = maxSize; } /** * @return […]

Scala类的构造函数参数

有什么区别: class Person(name: String, age: Int) { def say = "My name is " + name + ", age " + age } 和 class Person(val name: String, val age: Int) { def say = "My name is " + name + ", age " + age } 我可以将参数声明为var s,稍后更改它们的值吗? 例如, class Person(var name: String, […]

我应该使用单位还是省略了我的Scala方法的返回types?

我不知道指定单元作为我的Scala方法的返回types或完全舍弃返回types之间的区别是什么。 有什么不同? 任何人都可以请指教?