Tag: 斯卡拉

如何学习有关使用scala的信息。

在前一个问题中, 从Java访问scala.None ,似乎人们已经使用javap来弄清楚如何访问scala.None 。 我想知道他们是怎么做到的。 仅供参考,答案是: scala.Option$.MODULE$.apply(null); 可以缩短为: scala.Option.apply(null); 鉴于这个程序( OptionTest.scala ): object OptionTest extends App { val x = scala.None val y = scala.Some("asdf") } 我运行javap就像这样: javap -s -c -l -private OptionTest 这是javap输出的一部分: public static final scala.None$ x(); Signature: ()Lscala/None$; Code: 0: getstatic #11; //Field OptionTest$.MODULE$:LOptionTest$; 3: invokevirtual #55; //Method OptionTest$.x:()Lscala/None$; 6: areturn 我也在scala.None和scala.Option上运行javap。 […]

用于Scala中Streams的用例

在Scala中有一个Stream类,非常像迭代器。 迭代器和stream在斯卡拉之间的主题差异? 对两者之间的相似性和差异提供了一些见解。 看到如何使用stream是非常简单的,但我没有很多常见的使用情况下,我会使用stream而不是其他工件。 我现在的想法是: 如果你需要使用无限的系列。 但是这对我来说似乎不是一个常见的用例,所以它不符合我的标准。 (请纠正我,如果这是常见的,我只是有一个盲点) 如果您有一系列数据需要计算每个元素,但您可能需要重复使用多次。 这很弱,因为我可以将它加载到一个列表中,这个列表在开发人员群体的大部分概念上更容易遵循。 也许有大量的数据或计算成本很高的系列,并且很有可能你所需要的项目不需要访问所有的元素。 但是在这种情况下,迭代器将是一个很好的匹配,除非需要进行多次search,在这种情况下,即使效率稍低,也可以使用列表。 有一系列复杂的数据需要重复使用。 这里也可以使用一个列表。 虽然在这种情况下,这两种情况将同样难以使用,并且由于不是所有的元素都需要被加载,所以Stream将会更好。 但是,不是那么平常……还是这样? 那么我错过了什么大用途? 或者大部分是开发人员偏好? 谢谢

彩色terminal输出如何被禁止/播放?

我想禁用从sbt / playlogging的颜色转义码。 这可能吗? 如果是这样,有没有办法做到这一点,而不需要改变configuration – 即通过命令行开关或系统属性。

所有在斯卡拉

如下所示,在Haskell中,可能存储具有不同types的列表值,并且在其上具有特定的上下文边界: data ShowBox = forall s. Show s => ShowBox s heteroList :: [ShowBox] heteroList = [ShowBox (), ShowBox 5, ShowBox True] 我怎么能达到相同的斯卡拉,最好是没有分类?

这是在Scala中初始化空引用的正确方法吗?

比方说,我有一个未初始化的MyObject实例: var a:MyObject = null 这是正确的方法来初始化为空?

如何从Scala的Collection中的索引中获得一个Option?

有没有一种方法,只使用Scala的收集API,试图通过其索引得到一个元素时获得一个列表中的选项? 我正在寻找这个function的等价物,它存在吗? def optionalValue[T](l: List[T], index: Int) = { if (l.size < (index+1)) None else Some(l(index)) } 谢谢

在一个可遍历的foreach方法中获取当前元素的索引?

假设我有两个数组: val ar1 = Array[String]("1", "2", "3") val ar2 = Array[String]("1", "2", "3", "4") 现在,对于ar1每个元素,我想首先将该元素与ar2的相应元素连接起来,然后打印结果。 一种方法可能是这样的: List.range(0, ar1.size).foreach(i => println(ar1(i)+ar2(i))) 如果有一个foreach变体可以让我直接使用ar1的索引,而不是先构造整数列表,那将会更好。 也许有更好的办法?

在生成types类实例的时候,不能certificate单例types是单例types

假设我有一个types类来certificate一个Shapeless副产品中的所有types都是单例types: import shapeless._ trait AllSingletons[A, C <: Coproduct] { def values: List[A] } object AllSingletons { implicit def cnilSingletons[A]: AllSingletons[A, CNil] = new AllSingletons[A, CNil] { def values = Nil } implicit def coproductSingletons[A, H <: A, T <: Coproduct](implicit tsc: AllSingletons[A, T], witness: Witness.Aux[H] ): AllSingletons[A, H :+: T] = new AllSingletons[A, H :+: […]

如何在IntelliJ IDEA中使用Scala(或者:为什么要为Scala获得一个可用的IDE非常困难)?

我最近放弃了尝试在Eclipse中使用Scala(基本的东西,如完成不起作用)。 所以现在我正在尝试IntelliJ。 我不是很远。 我已经能够编辑程序(在语法突出和完成…在!)。 但即使是最简单的“Hello World”,我也无法运行。 这是原来的错误: 斯卡拉签名Predef有错误的版本 预计5.0 发现:4.1在…. scala-library.jar中 但是这是IDEA 9.0.1的昨天。 见下文… UPDATE 今天,我卸载了IntelliJ 9.0.1,并安装了9.0.2的早期可用性,以及Scala插件的4/14稳定版本。 然后我通过向导从头开始设置一个项目: 新的项目从零开始 JDK是1.6.20 接受默认(项目)而不是全局/模块 接受下载Scala 2.8.0beta1到项目的lib文件夹 创build一个新的类: 对象你好{ def main(args:Array [String]){ println(“hello:”+ args); } } 对于我的努力,我现在有一个全新的错误:) 这里是: Scalac内部错误:类java.lang.ClassNotFoundException [java.net.URLClassLoader $ 1.run(URLClassLoader.java:202),java.security.AccessController.doPrivileged(Native Method),java.net.URLClassLoader.findClass(URLClassLoader.java :190),java.lang.ClassLoader.loadClass(ClassLoader.java:307),sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301),java.lang.ClassLoader.loadClass(ClassLoader.java:248) ,java.lang.Class.forName0(Native Method),java.lang.Class.forName(Class.java:169),org.jetbrains.plugins.scala.compiler.rt.ScalacRunner.main(ScalacRunner.java:72) ] 最终更新 我卸载了9.0.2 EA并重新安装了9.0.1,但是这一次使用了Scala的2.7.3版本,而不是默认的2.7.6,因为2.7.3是IntelliJ网站屏幕截图中显示的我猜屏幕截图certificate他们实际上testing了这个版本!)。 现在一切正常!

你在Scala / Lift开发的经验是什么?

最近我听到很多有关Scala和Lift Web框架的好消息,尤其是来自Foursquare的人,因此我可能会在下一个项目中使用这个技术。 你们是Scala / Lift开发者吗? 你在这个平台上开发的经验是什么?它比Ruby On Rails或Python / Django有什么优势? 你是否认为它是一种可行的技术,在接下来的几年中将会是“值得关注的东西”? 这值得么? 在Scala / Lift平台上分享您的经验。