Scala语法有很多符号.由于使用搜索引擎很难找到这些类型的名称,因此全面列出这些名称会很有帮助.
Scala中的所有符号是什么,它们各自做了什么?
我特别想知道->,||=,++=,<=,_._,::,和:+=.
如何在字符串插值中逃避美元符号?
def getCompanion(name: String) = Class.forName(s"my.package.$name\$")
// --> "error: unclosed string literal"
Run Code Online (Sandbox Code Playgroud) IntelliJ IDEA具有检查拼写的检查.在分析概述中,我可以看到发现了多少拼写错误,例如12 typos found.在代码中,它们使用波浪绿线突出显示.
但是,我发现很难手动查看那些波浪线.是否有键盘快捷键或搜索功能会自动跳到下一个突出显示的拼写错误?
当我尝试安装npm时sudo apt-get install npm,我收到以下错误:
E:无法找到包裹npm
为什么不能找到npm?我正在使用Debian 9 sudo apt-get install nodejs.
我需要以最少的仪式获得一个简单的JSON序列化解决方案.所以我很高兴找到即将推出的Play 2.2库.这与普通案例类完美匹配,例如
import play.api.libs.json._
sealed trait Foo
case class Bar(i: Int) extends Foo
case class Baz(f: Float) extends Foo
implicit val barFmt = Json.format[Bar]
implicit val bazFmt = Json.format[Baz]
Run Code Online (Sandbox Code Playgroud)
但是以下失败了:
implicit val fooFmt = Json.format[Foo] // "No unapply function found"
Run Code Online (Sandbox Code Playgroud)
我如何设置所谓的缺失提取器Foo?
或者你会推荐任何其他独立的库,或多或少全自动处理我的情况?我不关心是在编译时使用宏还是在运行时使用反射,只要它开箱即用即可.
方法##和有hashCode什么区别?
无论hashCode我使用哪个类或重载,它们似乎都输出相同的值.谷歌也没有帮助,因为它找不到符号##.
一般来说,如何在?中找到满足一定条件的第一个元素Seq?
例如,我有一个可能的日期格式列表,我想找到第一种格式的解析结果可以解析我的日期字符串.
val str = "1903 January"
val formats = List("MMM yyyy", "yyyy MMM", "MM yyyy", "MM, yyyy")
.map(new SimpleDateFormat(_))
formats.flatMap(f => {try {
Some(f.parse(str))
}catch {
case e: Throwable => None
}}).head
Run Code Online (Sandbox Code Playgroud)
不错.但是,它有点难看.2.它做了一些不必要的工作(尝试"MM yyyy"和"MM, yyyy"格式).也许有更优雅和惯用的方式?(用Iterator?)
vals(?)在单例对象中自动最终的原因是什么?例如
object NonFinal {
val a = 0
val b = 1
def test(i: Int) = (i: @annotation.switch) match {
case `a` => true
case `b` => false
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
<console>:12: error: could not emit switch for @switch annotated match
def test(i: Int) = (i: @annotation.switch) match {
^
Run Code Online (Sandbox Code Playgroud)
而
object Final {
final val a = 0
final val b = 1
def test(i: Int) = (i: @annotation.switch) match {
case `a` => true
case `b` => …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用sbt-assembly将scala项目转换为可部署的胖jar .当我在sbt中运行我的程序集任务时,我收到以下错误:
Merging 'org/apache/commons/logging/impl/SimpleLog.class' with strategy 'deduplicate'
:assembly: deduplicate: different file contents found in the following:
[error] /Users/home/.ivy2/cache/commons-logging/commons-logging/jars/commons-logging-1.1.1.jar:org/apache/commons/logging/impl/SimpleLog.class
[error] /Users/home/.ivy2/cache/org.slf4j/jcl-over-slf4j/jars/jcl-over-slf4j-1.6.4.jar:org/apache/commons/logging/impl/SimpleLog.class
Run Code Online (Sandbox Code Playgroud)
现在来自sbt-assembly文档:
如果多个文件共享相同的相对路径(例如,多个依赖项JAR中名为application.conf的资源),则默认策略是验证所有候选项具有相同的内容,否则出错.可以使用以下内置策略之一或编写自定义策略在每个路径的基础上配置此行为:
MergeStrategy.deduplicate是上面描述的默认值MergeStrategy.first选择classpath顺序中的第一个匹配文件MergeStrategy.last挑选最后一个MergeStrategy.singleOrError在冲突时出现错误消息MergeStrategy.concat简单地连接所有匹配的文件并包含结果MergeStrategy.filterDistinctLines也可以连接,但在此过程中会留下重复的内容MergeStrategy.rename重命名源自jar文件的文件MergeStrategy.discard只是丢弃匹配的文件
通过这个我设置我的build.sbt如下:
import sbt._
import Keys._
import sbtassembly.Plugin._
import AssemblyKeys._
name := "my-project"
version := "0.1"
scalaVersion := "2.9.2"
crossScalaVersions := Seq("2.9.1","2.9.2")
//assemblySettings
seq(assemblySettings: _*)
resolvers ++= Seq(
"Typesafe Releases Repository" at "http://repo.typesafe.com/typesafe/releases/",
"Typesafe Snapshots Repository" at "http://repo.typesafe.com/typesafe/snapshots/",
"Sonatype Repository" at …Run Code Online (Sandbox Code Playgroud) 我在IntelliJ IDEA中遇到了反锯齿文本的问题.那个东西由于某种原因附带了自己版本的OpenJDK 8.无论如何......子像素别名对于明亮的暗文本是可以接受的:
但对于明亮的黑暗文本,伽玛是错误的:
这意味着在这个方案中,文本看起来好像是粗体和水平模糊/模糊.
是否可以指定系统属性或破解系统,否则将AA插值的伽玛值更改为更暗的颜色?我已经选择了一个非常精细的字体(FicaCode Light),在这台计算机上没有显示较少粗体的字体(带有Gnome 3,19000x1080显示屏的Linux).
编辑:我真的在寻找一种控制AA伽玛的方法.我没有使用过IDEA 2017.1 EAP,但是发布版本已经附带了"固定"捆绑调整版本1.8.0_112,这在gist评论中提到过.如果我下载该版本,我会得到与上面两张图像完全相同的像素输出.这些是idea64.jvmoptions:
-Xms128m
-Xmx750m
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Djava2d.font.loadFontConf=false
Run Code Online (Sandbox Code Playgroud)
添加或删除最后一个属性只是使零差价,也改变从lcd到on或off具有零效果.
将这些图片与我通过Debian安装的常规OpenJDK 1.8.0_121进行比较:
很明显,这里的AA被破坏了(1:1它看起来完全是彩色的).所以我认为捆绑版本的子像素渲染基本上是正确的.只有在深色背景上使用错误的伽玛才能显示浅色文字.
编辑:经过更多的调查,问题归结为:我可以使用之间的自定义font.conf文件,和.对于轻微提示,字体在宽高比方面看起来平衡,但抗锯齿具有错误的伽玛,因此字体线条很粗(一切看起来都是粗体).对于中等或完全提示,字体看起来更细,更清晰,但现在宽高比被打破,字体太宽.hintstylehintslighthintmediumhintfull
scala ×7
antialiasing ×1
apt ×1
apt-get ×1
collections ×1
debian ×1
deployment ×1
field ×1
final ×1
hashcode ×1
java ×1
java-2d ×1
json ×1
node.js ×1
npm ×1
operators ×1
sbt ×1
sbt-assembly ×1