Scala没有enum像Java那样的类型安全.给定一组相关常量,Scala表示这些常量的最佳方法是什么?
Scala的一个便利功能是lazy val,a的评估val被延迟到必要时(首次访问时).
当然,lazy val必须有一些开销 - 在某处Scala必须跟踪该值是否已经被评估并且评估必须同步,因为多个线程可能会尝试同时第一次访问该值.
a的成本到底是什么?lazy val是否有一个隐藏的布尔标志与a关联,lazy val如果它已经被评估,是什么同步,是否有更多的成本?
另外,假设我这样做:
class Something {
lazy val (x, y) = { ... }
}
Run Code Online (Sandbox Code Playgroud)
这是否与两个单独的lazy vals 相同x,y或者我只获得一次开销,对于该对(x, y)?
从Scala 2.7.2开始,有一些叫做ManifestJava类型擦除的解决方法.但是,如何Manifest确切地工作以及为什么/何时需要使用它?
Jorge Ortiz 的博客文章Manifests:Reified Types解释了其中的一些内容,但它没有解释如何将它与上下文界限一起使用.
那么ClassManifest,有什么区别Manifest?
我有一些代码(一个更大的程序的一部分,不能轻易地包含在这里),它有关于类型擦除的一些警告; 我怀疑我可以通过使用清单解决这些问题,但我不确定如何解决.
Scala 2.8的一个新功能是上下文边界.什么是上下文绑定以及它在哪里有用?
当然我先搜索(例如找到这个),但我找不到任何非常清晰和详细的信息.
我有以下代码:
List<Product> product = new List<Product>();
Run Code Online (Sandbox Code Playgroud)
错误:
Cannot instantiate the type List<Product>
Run Code Online (Sandbox Code Playgroud)
Product是我的EJB项目中的实体.为什么我收到此错误?
我有以下代码尝试读取属性文件:
Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream stream = loader.getResourceAsStream("myProp.properties");
prop.load(stream);
Run Code Online (Sandbox Code Playgroud)
我在最后一行得到一个例外.特别:
Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:46)
at Assignment1.BaseStation.main(BaseStation.java:87)
Run Code Online (Sandbox Code Playgroud)
谢谢,尼科斯
Scala有符号 - 以单引号开头的名称',它们是一种字符串常量.
我知道来自Ruby的符号(它们以冒号开头).在Ruby中,它们用于一些元编程任务,例如为成员变量生成getter和setter(例如attr_reader :name为其生成getter name).
我还没有在Scala代码中看到很多符号的使用.Scala中符号的实际用途是什么?
在Scala中,对于许多(所有?)类型的集合,您可以创建视图.
究竟是什么视图以及视图有用的目的是什么?
我搜索了@specializedScala 2.8.1标准库的源代码中的用法.它看起来像只性状一把类使用此批注:Function0,Function1,Function2,Tuple1,Tuple2,Product1,Product2,AbstractFunction0,AbstractFunction1,AbstractFunction2.
没有集合类@specialized.为什么不?这会产生太多的课程吗?
这意味着使用具有基本类型的集合类是非常低效的,因为将会有大量不必要的装箱和拆箱.
拥有s 的不可变列表或序列(具有IndexedSeq特征)的最有效方法是什么Int,避免装箱和拆箱?
collections performance autoboxing scala specialized-annotation
scala ×7
java ×3
performance ×2
autoboxing ×1
collections ×1
ejb ×1
enums ×1
list ×1
manifest ×1
properties ×1
regex ×1
scala-2.8 ×1
symbols ×1
views ×1