Tag: 斯卡拉

模式匹配vs if-else

我是Scala的新手。 最近我正在写一个业余爱好的应用程序,并且在很多情况下,试图使用模式匹配而不是if-else。 user.password == enteredPassword match { case true => println("User is authenticated") case false => println("Entered password is invalid") } 代替 if(user.password == enteredPassword) println("User is authenticated") else println("Entered password is invalid") 这些方法是否相同? 出于某种原因,他们中的一个比另一个更可取吗?

一个简单的方法来摆脱由SBT产生的*一切*

有没有一种简单的方法来摆脱由于执行SBT构build而生成的所有东西? 事实certificate,它创build目标目录到处都是。 表演 sbt clean clean-cache clean-lib clean-plugins …并没有摆脱一切。

迭代器和stream在Scala中的区别?

似乎Iterator和Stream都是懒惰的,并且允许你不断的返回元素到你的内心。 两者有什么区别?

什么是collections的意见,什么时候你想要使用它们?

在Scala中,对于许多(所有?)types的集合,您可以创build视图。 什么是一个视图,为什么目的是有用的意见?

映射Scala Map的键和值

斯卡拉的MapLike特质有一个方法 mapValues [C] (f: (B) ⇒ C): Map[A, C] 但我有时需要一个不同的types: mapKeysAndValues [C] (f: (A, B) ⇒ C): Map[A, C] 有没有一个简单的方法来做到这一点,我失踪了? 当然,这可以做一个折叠。

Scala中的单引号是什么意思?

在ScalaActors.pdf的这个幻灯片中,单引号指示何时将消息发送给乒乓演员? class Ping(count: int, pong: Pong) extends Actor { def act() { pong ! 'Ping // what does the single quote indicate??? receive { case 'Pong => } } }

SBT:启动一个非默认项目的主类的命令行“运行”

我开始使用sbt构build我的Scala代码(并处理依赖关系)。 据我所知,如果我使用 $ sbt run <args> 在命令行上,这将运行主项目的主类。 是否可以在命令行的任何其他项目中“运行”,即不在交互式会话模式中? (我想的东西可能看起来像$ sbt project <proj> run <args>或其他…) 我将在交互模式下做的是: $ sbt > project <projectname> > run <args> 这似乎很直截了当,但是我找不到任何描述这种行为的文档。 提示将不胜感激…

获取选项值或抛出exception

给定一个选项,获得它的价值或抛出一个exception尝试的惯用方法是什么? def foo() : String = { val x : Option[String] = … x.getOrException() }

斯卡拉惯用编码风格只是编写低效代码的一个很酷的陷阱?

我感觉到,Scala社区对编写“简洁”,“酷”, “scala惯用” ,“单行”(如果可能)代码有一点点痴迷。 紧接着是Java /命令/丑陋代码的比较。 虽然这(有时)导致易于理解的代码,但也导致99%的开发人员的代码效率低下。 而这正是Java / C ++不容易被击败的地方。 考虑这个简单的问题: 给定一个整数列表,删除最大的元素。 订购不需要保存。 这是我的解决scheme版本(这可能不是最好的,但这是普通的非Rockstar开发人员所能做的)。 def removeMaxCool(xs: List[Int]) = { val maxIndex = xs.indexOf(xs.max); xs.take(maxIndex) ::: xs.drop(maxIndex+1) } 这是斯卡拉惯用,简洁,并使用一些不错的列表function。 这也是非常低效的。 它至less遍历三四次。 这是我完全不酷,类似Java的解决scheme。 这也是一个合理的Java开发人员(或斯卡拉新手)会写。 def removeMaxFast(xs: List[Int]) = { var res = ArrayBuffer[Int]() var max = xs.head var first = true; for (x <- xs) { if […]

价值观,种类,种类……作为一个无限的序列?

我刚刚开始熟悉种类的概念,所以如果我不能很好地解决我的问题,请耐心等待… 值有types: 3 :: Int [1,2,3] :: [Int] ('c',True) :: (Char,Bool) types有种类: the type 'Int' has kind * the type '[Int]' also has kind * but the type constructor [] has kind * -> * similarly, the type (Char,Bool) has kind * but the type constructor (,) has kind * -> * -> * 种类有什么? […]