Tag: scala

Scalatypes关键字:如何在多个类中使用它

在编写Haskell之后回到Scala,我已经开始使用type关键字来使我的类定义更具可读性,例如: type RestfulParams = Map[String, String] def canonicalize(params: RestfulParams): String = { … } 我遇到的麻烦是这些types定义需要在类或对象内部生存 – 它们不像“Haskell”中的“头等公民”。 如果我尝试在一个类或对象之外定义一个types,我得到一个编译器expected class or object definition 。 我的问题是如何跨包中的多个类和对象使用这些types? 我现在所做的事似乎很难看: object RestfulTypes { type RestfulParams = Map[String, String] etc } 然后在另一个类文件中: import utils.{RestfulTypes => RT} def get(resource: String, params: RT.RestfulParams): String = { … } 有没有更好的方式做到这一点 – 顺便说一句,斯卡拉大师认为只能在类/对象中定义types是好事还是坏事?

我如何在Scala中设置多个types边界?

我想能够声明这样的东西: trait Narrowable[A] extends Iterable[A] { def narrow[B <: A & B <: AnyRef] : Iterable[B] } 那它,typesB应该是A 和 AnyRef的子types。 这可能吗?

如何在Scala中匹配多个值?

比方说,我想要使用相同的代码处理来自远程服务的多个返回值。 我不知道如何在Scala中expression这一点: code match { case "1" => // Whatever case "2" => // Same whatever case "3" => // Ah, something different } 我知道我可以使用Extract Method并调用它,但是在调用中仍然存在重复。 如果我使用Ruby,我会这样写: case code when "1", "2" # Whatever when "3" # Ah, something different end 请注意,我简化了这个例子,因此我不想在正则expression式或其他types上进行模式匹配。 匹配值实际上是复杂的值。

适合Scala的GUI框架?

我的意思是: 成熟和广泛使用 丰富的小部件集,呈现良好 惯用的斯卡拉 有一个所见即所得,但灵活的GUI生成器 独立的API文档(如果是一个包装,它不应该让我用另一种语言来引用父项目) 没有特别的顺序。 哪个GUI工具包满足哪些条件?

Android可以使用哪些编程语言进行开发?

可能重复: Android Dalvik上可以使用哪些编程语言? 大多数情况下,Android应用程序都是用Java编写的。 但是我听说它也可以使用Scala或其他语言。 而且我还读到可以包含本机C / C ++代码。 是否有可用的参考/列表,显示哪些语言可以使用?

在Scala中的隐式参数的好例子?

到目前为止,Scala中的隐式参数对我来说看起来不太好 – 它与全局variables太接近了,但是由于Scala看起来像是相当严格的语言,我开始怀疑我自己的看法:-)。 问题:当隐式参数真正起作用时,能否展示真实(或接近)的示例。 IOW:比showPrompt更严重的showPrompt ,这将certificate这样的语言devise。 或者相反 – 你能否展示可靠的语言devise(可以是虚构的),这将使隐含的不必要。 我认为即使没有任何机制比牵连更好,因为代码更清晰,没有猜测。 请注意,我在询问参数,而不是隐式函数(转换)! 更新 全局variables 谢谢你所有的好的答案。 也许我澄清了我的“全局variables”反对意见。 考虑这样的function: max(x : Int,y : Int) : Int 你叫它 max(5,6); 你可以(!)这样做: max(x:5,y:6); 但在我眼中, implicits作品: x = 5; y = 6; max() 它与这样的构造(类似PHP)没有太大的不同, max() : Int { global x : Int; global y : Int; … } 德里克的回答 这是一个很好的例子,但是如果你可以想到灵活使用发送消息而不是使用implicit请发表反例。 我真的很好奇语言devise的纯度;-)。

如何筛选没有列表?

如果我在Scala中有一个List[Option[A]] ,那么过滤掉None值的惯用方法是什么? 一种方法是使用以下内容: val someList: List[Option[String]] = List(Some("Hello"), None, Some("Goodbye")) someList.filter(_ != None) 有没有更“地道”的方式? 这似乎很简单。

Scala赋值给Unit的动机是什么,而不是赋值?

Scala赋值给Unit的动机是什么,而不是赋值? I / O编程的一个常见模式是做这样的事情: while ((bytesRead = in.read(buffer)) != -1) { … 但是在Scala中这是不可能的,因为… bytesRead = in.read(buffer) ..返回Unit,不是bytesRead的新值。 看起来像是一个有趣的事情,离开了function语言。 我想知道为什么这样做?

如何将选项的Scala集合转换为X的集合

我正在开始探索Scala,我感兴趣的事情之一是Optiontypes和能够消除null相关错误的承诺。 然而,我还没有能够解决如何将一个列表(或其他集合),例如Option[String] ,转换为String集合(显然筛选出任何值为None )。 换句话说,我怎么从这里得到: List[Option[Int]] = List(Some(1)) 对此: List[Int] = List(1) 我正在使用Scala 2.8,如果这对答案有任何影响。

用Java / Scala降价到HTML

我知道以下项目(主要来自http://www.w3.org/community/markdown/wiki/MarkdownImplementations ): 在Java中实现: txtmark http://github.com/rjeschke/txtmark (声称是运行在JVM上的最快的MD处理器) Markdown4j http://code.google.com/p/markdown4j(txtmark分叉,优势?更活跃的开发?) MarkdownPapers http://markdown.tautua.org/ (基于JavaCCparsing器) pegdown http://github.com/sirthias/pegdown MarkdownJ http://code.google.com/p/markdownj (放弃?) 在Scala中实现: 莱卡https://github.com/planet42 Actuarius http://henkelmann.eu/projects/actuarius/ (根据作者不完全符合标准) Knockoff http://tristanhunt.com/projects/knockoff (只是MD的子集?) ScalaMD https://github.com/chirino/scalamd 问:各自的性能特点,陷阱,怪癖是什么? 哪些支持Github扩展? 哪一个你会推荐玩一个! / Scala应用程序?