Tag: 斯卡拉

从哪里开始依赖types编程?

有一个伊德里斯教程,Agda教程和许多其他的教程风格的论文和介绍性材料,永无止境的参考事物还没有学习。 我在这些中间爬行,大部分时间我都被math符号和新术语突然出现,没有任何解释。 也许我的math糟透了:-) 有没有任何有纪律的方法来进行依赖型编程? 就像你想要学习Haskell一样,你从“自学一个Haskell”开始,当你想学习Scala的时候,你从Odersky的书开始,对于Ruby来说,你会看到那个奇怪的教程,里边有变异的bug。 但是我不能用他们的书来启动Agda或Idris。 他们高于我的头。 我尝试了Coq,并陷入了所有关于TeX的certificate风格。 阿格达需要一个巨大的math背景和伊德里斯,好吧,让我们暂时离开! 我非常了解静态types系统,我对Scala非常熟练,如果需要,我可以使用Haskell。 我理解function范式并日复一日地使用它,我理解代数数据types和GADT(实际上相当顺利),而且我最近设法理解了Lambda Cube。 虽然我缺乏math和逻辑部分。

Scala通用方法 – 没有ClassTag可用于T

我相对较新的斯卡拉,并试图定义一个通用的对象方法。 但是,当我引用方法中的参数化types时,我得到“没有ClassTag可用于T”。 这是一个可以说明问题的人为的例子。 scala> def foo[T](count: Int, value: T): Array[T] = Array.fill[T](count)(value) <console>:7: error: No ClassTag available for T def foo[T](count: Int, value: T): Array[T] = Array.fill[T](count)(value) ^ 在此先感谢您帮助理解这里出了什么问题,以及如何使这个人为的例子工作。

无法使用理解来映射未来的列表

我有这个问题,我必须每次都解决。 我无法使用理解来映射Future中包含的内容。 例: import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.Future val f = Future( List("A", "B", "C") ) for { list <- f e <- list } yield (e -> 1) 这给了我错误: error: type mismatch; found : List[(String, Int)] required: scala.concurrent.Future[?] e <- list ^ 但是,如果我这样做,它工作正常: f.map( _.map( (_ -> 1) ) ) 我应该不能通过使用理解来做到这一点,是我的另一个例子,我不平坦的原因是什么? 我正在使用Scala 2.10.0。

如何获得一个scala对象类的classOf

我想知道如何获得一个在Scala中的对象类的类对象。 好的,那是因为对象的双重含义而充满了嘴巴。 所以这里有一个失败的例子: object Main { private [this] val TAG = classOf [Main].getName; } // Main 如果Main是类,它完美的作品。 有任何想法吗?

scala:如何将扩展列表作为可变parameter passing给方法?

在scala中创build一个Map时,我调用Map(entities.map{e => e.id -> e}) ,我得到: found : scala.collection.mutable.IndexedSeq[(Int, Entity)] required: (Int, Entity) 这是因为Map.apply的签名是: def apply[A, B](elems: (A, B)*): CC[A, B] ,它需要一个可变参数风格的参数。 有没有办法转换IndexedSeq以便它可以通过Map.apply接受?

我如何在Scala中投射?

例如,假设我有 val myDouble = 25.7 val myInt = 5 我将如何做类似的事情 val divide = (Int) (myDouble / myInt)

使用Java的Scala:传递函数作为参数

考虑下面的Scala代码: package scala_java object MyScala { def setFunc(func: Int => String) { func(10) } } 现在在Java中,我希望使用MyScala作为: package scala_java; public class MyJava { public static void main(String [] args) { MyScala.setFunc(myFunc); // This line gives an error } public static String myFunc(int someInt) { return String.valueOf(someInt); } } 但是,上述不起作用(正如所料,因为Java不允许function编程)。 在Java中传递函数最简单的解决方法是什么? 我想要一个通用的解决scheme,可以处理具有任意数量参数的函数。 编辑:Java 8有比以下讨论的经典解决scheme更好的语法吗?

Scala:将Seq传递给var-args函数

给定一个函数,使用可变数量的参数,例如 def foo(os: String*) = println(os.toList) 我怎样才能传递一系列参数给函数? 我想写: val args = Seq("hi", "there") foo(args) 显然,这是行不通的。

Scala:布尔到选项

我有一个布尔值,并希望避免这种模式: if (myBool) Option(someResult) else None 我想要做的是 myBool.toOption(someResult) 任何build议与代码示例将不胜感激。

在Scala中混合多重特性

快速提示:来自Java难民Scala教程第5部分:特性和types的示例。 假设我有学生,工人,欠薪和年轻的特质。 我怎么能申报一个class( 不是实例 ),学院学生,所有这些特质? 注意:我知道最简单的例子,比如有一两个特质的大学学生: class CollegeStudent extends Student with Worker