Questions tagged «scala»

Scala是主要针对Java虚拟机的通用编程语言。它旨在以简洁,优雅和类型安全的方式表达常见的编程模式,它融合了命令式和功能性编程风格。它的主要特征是:具有类型推断功能的高级静态类型系统;功能类型;模式匹配; 隐式参数和转换;操作符重载;与Java完全互操作性;并发

6
Scala检查列表中是否存在元素
我需要检查列表中是否存在字符串,并相应地调用一个接受布尔值的函数。 用一个衬板就能做到这一点吗? 下面的代码是我能得到的最好的代码: val strings = List("a", "b", "c") val myString = "a" strings.find(x=>x == myString) match { case Some(_) => myFunction(true) case None => myFunction(false) } 我敢肯定,用更少的编码就可以做到这一点,但是我不知道怎么做!
86 string  list  scala  find 

9
在Apache Spark中将Dataframe的列值提取为列表
我想将数据框的字符串列转换为列表。我可以从DataframeAPI中找到RDD,因此我尝试先将其转换回RDD,然后再将toArray功能应用于RDD。在这种情况下,长度和SQL都可以正常工作。但是,我从RDD得到的结果在每个像这样的元素周围都有方括号[A00001]。我想知道是否有适当的方法可以将列转换为列表,也可以删除方括号。 任何建议,将不胜感激。谢谢!

7
什么时候在Scala方法声明中使用等号?
等号: object HelloWorld { def main(args: Array[String]) = { println("Hello!") } } 没有等号: object HelloWorld { def main(args: Array[String]) { println("Hello!") } } 以上两个程序都以相同的方式执行。在博客文章《我不喜欢Scala》中,我读到缺少等号时,该方法将返回Unit(与Java相同void),因此返回值的方法必须使用等号。但是不返回值的方法可以用任何一种方式编写。 在Scala方法中使用不返回值的等号的最佳实践是什么?
85 scala 

7
什么是Scala延续,为什么要使用它们?
我刚刚完成了Scala编程,并且一直在研究Scala 2.7和2.8之间的变化。似乎最重要的一个是continuations插件,但我不了解它的作用或作用。我已经看到了异步I / O的好处,但是我还无法找出原因。在这个问题上一些比较流行的资源是: 定界的延续和Scala 在Scala中转到 品尝2.8:延续 定界的连续性说明(在Scala中) 还有关于堆栈溢出的问题: Scala 2.8和Scala 2.7之间的最大区别是什么? 不幸的是,这些参考文献都没有尝试定义连续的含义或移位/重置功能应该做什么,并且我还没有找到任何能做的参考文献。我一直无法猜测链接文章中的任何示例如何工作(或它们如何工作),因此帮助我的一种方法可能是逐行浏览这些示例之一。即使是第三篇文章中的简单内容: reset { ... shift { k: (Int=>Int) => // The continuation k will be the '_ + 1' below. k(7) } + 1 } // Result: 8 为什么结果是8?那可能会帮助我入门。

1
如何在Scala中对多个值进行模式匹配?
假设我想使用相同的代码处理来自远程服务的多个返回值。我不知道如何在Scala中表达这一点: 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 请注意,我简化了示例,因此我不想在正则表达式或某些此类表达式上进行模式匹配。匹配值实际上是复数值。


12
从不可变列表中“删除”一个元素的惯用Scala方法是什么?
我有一个列表,其中可能包含将进行相等比较的元素。我想要一个类似的List,但是删除了一个元素。因此,我希望能够从(A,B,C,B,D)“删除”一个B来获得例如(A,C,B,D)。结果中元素的顺序无关紧要。 我有在Scala中以Lisp启发的方式编写的工作代码。有没有更惯用的方法来做到这一点? 上下文是一种纸牌游戏,其中有两副标准纸牌在玩,因此可能有重复的纸牌,但一次仍玩一次。 def removeOne(c: Card, left: List[Card], right: List[Card]): List[Card] = { if (Nil == right) { return left } if (c == right.head) { return left ::: right.tail } return removeOne(c, right.head :: left, right.tail) } def removeCard(c: Card, cards: List[Card]): List[Card] = { return removeOne(c, Nil, cards) …
84 list  scala 



8
将Scala分配评估为单位而不是赋值的动机是什么?
将Scala分配评估为单位而不是赋值的动机是什么? I / O编程中的常见模式是执行以下操作: while ((bytesRead = in.read(buffer)) != -1) { ... 但这在Scala中是不可能的,因为... bytesRead = in.read(buffer) ..返回Unit,而不是bytesRead的新值。 忽略功能性语言似乎是一件有趣的事情。我想知道为什么要这么做吗?

10
如何覆盖案例类同伴中的应用
这就是这种情况。我想这样定义一个案例类: case class A(val s: String) 并且我想定义一个对象以确保在创建类的实例时,“ s”的值始终为大写,如下所示: object A { def apply(s: String) = new A(s.toUpperCase) } 但是,这不起作用,因为Scala抱怨apply(s:String)方法定义了两次。我知道case class语法会自动为我定义它,但是我是否还有其他方法可以实现此目的?我想坚持使用case类,因为我想将其用于模式匹配。

3
Scala特性与Java 8接口之间的区别和相似之处是什么?
我是Scala的新手,开始学习这种语言很有趣,但我仍在努力使之发展。我对Scala特性的理解是,它们类似于Java接口,不同之处在于某些方法可以实现。 Java 8正在添加接口,这些接口可以具有可以提供实现的默认方法。 Java 8接口和Scala特性之间的异同是什么?
84 java  scala 

18
Option [T]类有什么意义?
我无法理解Option[T]Scala的课程重点。我的意思是,我不能看到任何advanagesNone了null。 例如,考虑以下代码: object Main{ class Person(name: String, var age: int){ def display = println(name+" "+age) } def getPerson1: Person = { // returns a Person instance or null } def getPerson2: Option[Person] = { // returns either Some[Person] or None } def main(argv: Array[String]): Unit = { val p = …

3
Scala中的两种计算方式;每个都有什么用例?
我正在维护的《 Scala风格指南》中讨论多个参数列表。我已经意识到有两种currying方式,而且我想知道用例是什么: def add(a:Int)(b:Int) = {a + b} // Works add(5)(6) // Doesn't compile val f = add(5) // Works val f = add(5)_ f(10) // yields 15 def add2(a:Int) = { b:Int => a + b } // Works add2(5)(6) // Also works val f = add2(5) f(10) // …

1
如何用scalaz-stream替换编写为顺序状态转换流的程序?
我试图了解如何重组程序,该程序以前是作为状态转换序列编写的: 我有一些业务逻辑: type In = Long type Count = Int type Out = Count type S = Map[Int, Count] val inputToIn: String => Option[In] = s => try Some(s.toLong) catch { case _ : Throwable => None } def transition(in: In): S => (S, Out) = s => { val …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.