Questions tagged «scala»

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



2
scala-泛型中的任何vs下划线
Scala中以下泛型定义之间的区别是什么: class Foo[T <: List[_]] 和 class Bar[T <: List[Any]] 我的直觉告诉我它们大致相同,但后者更明确。我发现前者可以编译但后者不能编译的情况,但不能使我完全了解。 谢谢! 编辑: 我可以混入另一个吗? class Baz[T <: List[_ <: Any]]

2
如何将Scala数组传递给Scala vararg方法?
考虑下面的代码: private def test(some:String*){ } private def call () { val some = Array("asd", "zxc") test(some) } 它expect String, found Array[String]为什么打印?Scala varargs不是数组吗? 注意 我在Stack Overflow上发现了一些有关Scala变量变量的问题,但所有这些问题都与调用Java varargs方法或将Scala列表转换为数组有关。

1
Scala中的显式类型转换
可以说我有以下代码: abstract class Animal case class Dog(name:String) extends Animal var foo:Animal = Dog("rover") var bar:Dog = foo //ERROR! 如何修复此代码的最后一行?基本上,我只想做类似C语言的事情: var bar:Dog = (Dog) foo


2
如何将Option [X]的Scala集合转换为X的集合
我开始探索Scala,而我感兴趣的事情Option之一就是能够消除null相关错误的类型和前景。 但是,我还无法弄清楚如何将的列表(或其他集合)转换Option[String]为的集合String(显然会过滤掉的任何值None)。 换句话说,我如何从中得到: List[Option[Int]] = List(Some(1)) ...对此: List[Int] = List(1) 我正在使用Scala 2.8,如果这对答案有影响。

9
模式匹配与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") 这些方法是否相等?由于某种原因,其中一个比另一个更可取吗?
76 scala 



8
Scala中隐式参数的好例子?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 到目前为止,Scala中的隐式参数对我而言并不好-它与全局变量过于接近,但是由于Scala似乎是相当严格的语言,所以我开始怀疑: 问题:当隐式参数真正起作用时,您能否显示一个真实的(或接近的)良好示例?IOW:比严重的事情showPrompt证明了这种语言设计的合理性。 或相反-您能展示可靠的语言设计(可以是虚构的)吗?我认为,甚至没有一种机制比隐式机制更好,因为代码更清晰,没有猜测。 请注意,我是在问参数,而不是隐式函数(转换)! 更新 全局变量 感谢您提供的所有出色答案。也许我澄清我的“全局变量”异议。考虑这样的功能: 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请发布反例。我真的对语言设计的纯正很好奇;-)。

10
FP和OO是否正交?
我一次又一次听到,我正在尝试理解和验证FP和OO是正交的。 首先,两个概念正交是什么意思? FP尽可能地鼓励不变性和纯净性,而OO似乎是为状态和突变而构建的–命令命令编程的组织性略微?我意识到对象可以是不可变的,但是OO似乎暗示着我的状态/变化。 他们似乎是相反的。这如何影响它们的正交性? 像Scala这样的语言可以轻松实现OO和FP,这是否会影响这两种方法的正交性?


11
要在Scala中映射的案例类
有没有一种我可以转换Scalacase class实例的好方法,例如 case class MyClass(param1: String, param2: String) val x = MyClass("hello", "world") 变成某种映射,例如 getCCParams(x) returns "param1" -> "hello", "param2" -> "world" 它适用于任何案例类,而不仅仅是预定义的案例类。我发现您可以通过编写查询基础产品类的方法来提取案例类名称,例如 def getCCName(caseobj: Product) = caseobj.productPrefix getCCName(x) returns "MyClass" 因此,我在寻找类似的解决方案,但针对案例类字段。我以为解决方案可能必须使用Java反射,但是如果案例类的基础实现发生变化,我不希望编写可能会在将来的Scala版本中破坏的内容。 目前,我正在使用Scala服务器,并使用case类定义协议及其所有消息和异常,因为它们是一个如此漂亮,简洁的构造。但是,然后我需要将它们转换为Java映射,以便通过消息传递层发送给任何客户端实现使用。我当前的实现只为每个案例类分别定义了一个翻译,但是最好找到一个通用的解决方案。
75 scala  case-class 

5
Scala中的类型归属的目的是什么?
规范中没有太多有关类型归属的信息,并且当然没有关于目的的任何信息。除了“使传递的varargs起作用”之外,我还要使用类型归属?以下是一些scala REPL,以了解使用它的语法和效果。 scala> val s = "Dave" s: java.lang.String = Dave scala> val p = s:Object p: java.lang.Object = Dave scala> p.length <console>:7: error: value length is not a member of java.lang.Object p.length ^ scala> p.getClass res10: java.lang.Class[_ <: java.lang.Object] = class java.lang.String scala> s.getClass res11: java.lang.Class[_ <: java.lang.Object] = …

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.