我已经在Scala和Android上使用了Scala 2.7.3 final 的教程.由此产生的Android应用程序可以工作,但即使是最基本的应用程序也需要几分钟(!)来编译,需要900 kb压缩,这是移动应用程序的显示阻止.此外,IDE时不时会耗尽内存.我认为dex不适合像这样的大型图书馆scala-library.
有时,当我阅读Scala生态系统中的文章时,我会读到"提升"/"解除"一词.不幸的是,没有解释这究竟意味着什么.我做了一些研究,似乎提升与功能价值或类似的东西有关,但我无法找到一个文本,以初学者友好的方式解释实际提升的内容.
通过Lift框架存在额外的混乱,其名称已经提升,但它无助于回答这个问题.
什么是Scala中的"提升"?
如何在Scala中用另一个字符串"连接"一个可迭代的字符串?
val thestrings = Array("a","b","c")
val joined = ???
println(joined)
Run Code Online (Sandbox Code Playgroud)
我想要输出这个代码a,b,c(通过","加入元素).
我正在阅读斯卡拉之旅:抽象类型.什么时候使用抽象类型更好?
例如,
abstract class Buffer {
type T
val element: T
}
Run Code Online (Sandbox Code Playgroud)
而是那些泛型,例如,
abstract class Buffer[T] {
val element: T
}
Run Code Online (Sandbox Code Playgroud) 我注意到Scala提供了lazy vals.但我不知道他们做了什么.
scala> val x = 15
x: Int = 15
scala> lazy val y = 13
y: Int = <lazy>
scala> x
res0: Int = 15
scala> y
res1: Int = 13
Run Code Online (Sandbox Code Playgroud)
该REPL表明y是一个lazy val,但它是如何从一个正常的不同val?
据我所知,在Scala中,也可以调用函数
例如,给定以下声明,我们是否知道如何调用该函数?
宣言:
def f (x:Int, y:Int) = x;
Run Code Online (Sandbox Code Playgroud)
呼叫
f (1,2)
f (23+55,5)
f (12+3, 44*11)
Run Code Online (Sandbox Code Playgroud)
请问有什么规定?
是否有关于何时使用案例类(或案例对象)与在Scala中扩展Enumeration的最佳实践指南?
他们似乎提供了一些相同的好处.
在Scala 2.8中,有一个对象scala.collection.package.scala:
def breakOut[From, T, To](implicit b : CanBuildFrom[Nothing, T, To]) =
new CanBuildFrom[From, T, To] {
def apply(from: From) = b.apply() ; def apply() = b.apply()
}
Run Code Online (Sandbox Code Playgroud)
我被告知这会导致:
> import scala.collection.breakOut
> val map : Map[Int,String] = List("London", "Paris").map(x => (x.length, x))(breakOut)
map: Map[Int,String] = Map(6 -> London, 5 -> Paris)
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?为什么breakOut被称为我的论据List?
scala ×10
function ×2
android ×1
case-class ×1
command-line ×1
enumeration ×1
generics ×1
lifting ×1
methods ×1
resources ×1
scala-2.8 ×1
string ×1