我非常喜欢IntelliJ IDEA的"Move语句"快捷方式(Ctrl+ Shift+ ↑/ ↓).但是 - 我不确定这是否只是一个与ActionScript编辑相关的错误 - 移动语句并不总是我想要的,有时在编辑AS代码时它是不正确的.
所以我只想向上/向下移动一行线.Eclipse快捷方式是Alt+ ↑/ ↓,并且不会按语句移动.IntelliJ IDEA中是否有等价物?
假设你有一个List(1,"1")它是类型List [Any],这当然是正确的和预期的.现在,如果我像这样映射列表
scala> List(1, "1") map {
| case x: Int => x
| case y: String => y.toInt
| }
Run Code Online (Sandbox Code Playgroud)
结果类型是List [Int],也是预期的.我的问题是,是否存在等效于过滤器的映射,因为以下示例将导致List [Any].这可能吗?我假设这可以在编译时解决,可能不是运行时?
scala> List(1, "1") filter {
| case x: Int => true
| case _ => false
| }
Run Code Online (Sandbox Code Playgroud) 我有一个空的应用程序,没有涉及故事板或xib.我希望有一个隐藏的状态栏,只支持横向.同样,我不想仅在代码中进行这些更改,也不要触摸Info.plist.
我创建了一个带控制器的UIWindow,它表示唯一支持的方向是landscape.在这种情况下,我的UIWindow是在纵向模式的维度中创建的,不会旋转.预期结果将是完全青色的屏幕.

这是我的代表:
#import "AppDelegate.h"
#import "AppViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor cyanColor];
self.window.rootViewController = [[AppViewController alloc] init];
[self.window makeKeyAndVisible];
return YES;
}
@end
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
#import "AppViewController.h"
@implementation AppViewController
- (BOOL)shouldAutorotate {
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeLeft;
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
@end
Run Code Online (Sandbox Code Playgroud)
如果我在调用makeKeyAndVisible之后设置了rootViewController,那么一切似乎都起作用.
self.window.backgroundColor = [UIColor cyanColor];
[self.window makeKeyAndVisible];
self.window.rootViewController = [[AppViewController alloc] init]; …Run Code Online (Sandbox Code Playgroud) 是否有关于"outer =>"功能的文档?它看起来像一个带有推理类型的自我类型注释.但我觉得我错了.
如果是这种情况,是否只是表达访问权限的另一种方式super?
trait A extends (B => C) {
outer =>
def apply(x: B): C = outer(x)
}
Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能抽象出案例类的复制方法.基本上我有类似的东西sealed trait Op,然后像case class Push(value: Int) extends Op和case class Pop() extends Op.
第一个问题:没有参数/成员的案例类没有定义复制方法.你可以在REPL中试试这个.
scala> case class Foo()
defined class Foo
scala> Foo().copy()
<console>:8: error: value copy is not a member of Foo
Foo().copy()
^
scala> case class Foo(x: Int)
defined class Foo
scala> Foo(0).copy()
res1: Foo = Foo(0)
Run Code Online (Sandbox Code Playgroud)
编译器出现此异常的原因是什么?我认为它是相当单一的,我希望每个案例类都定义一个复制方法.
第二个问题:我有一个方法def ops: List[Op],我想复制所有的操作ops map { _.copy() }.我如何在Op特征中定义复制方法?如果我说的话,我会收到"太多参数"的错误def copy(): Op.但是,由于所有copy()方法都只有可选参数:为什么这不正确?而且,我该怎么做呢?通过为所有案例类创建另一个为所有案例类命名def clone(): Op和写入的方法def clone() …
我想知道最好的方法是什么.
val foo = Some("a")
val bar = Some(2)
def baz(a: String, b: Int) = if((b % 2) == 0) Some(a+","+b) else None
(x zip y) flatMap baz //does not compile of course
(x zip y) flatMap { x => baz(x._1, x._2) } //ugly
Run Code Online (Sandbox Code Playgroud)
我认为Odersky等人.在这个例子中,他们还有另一个技巧来降低噪音.
所以问题是如何在这里打击杂乱,假设你不允许改变baz(例如def baz(a: (String Int)))的实现.
有没有人设法使用findbugs 2.3.1,2.3.2-SNAPSHOT或2.4-SNAPSHOT来处理Maven 3.x项目?
我总是最终得到:
[错误]无法执行目标org.codehaus.mojo:findbugs-maven-plugin:2.4-SNAPSHOT:项目cular-db上的findbugs(default-cli):FindBugs报告生成中出错.找不到匹配的构造函数:org.codehaus.mojo.findbugs.FindbugsReportGenerator(org.codehaus.doxia.module.xhtml.XhtmlSink,java.util.PropertyResourceBundle,java.io.File,org.apache.maven.doxia.tools .DefaultSiteTool)
我尝试了所有最新版本.如果我使用findbugs:fingbugs或仅使用网站目标并不重要.它用.指定
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${findbugs.version}</version>
<configuration>
<threshold>High</threshold>
<effort>Default</effort>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud) 场景:我正在解析IL并且想要从基于堆栈的表示转换为CFG.
我的IL包含多个操作,如PushInt(值),Pop等.问题是现在哪个实现在Scala方面是正确的.我很乐意使用案例类/对象或提取器,以便我可以编写代码
op match {
case PushInt(x) => doSomethingWith x
case Pop => ...
}
Run Code Online (Sandbox Code Playgroud)
现在问题存在于一个序列,PushInt(1) :: PushInt(1) :: Pop :: Pop因为PushInt(1)等于PushInt(1)并且我不能将多个(相等)操作添加到集合中.但是我知道我正在抛出一些信息,这是流程中的位置,但是这被隐含地存储为序列中的te索引.
一种可能的解决方案是覆盖hashCode方法并破坏equal/hashCode的规则.我对此并不满意.
另一个选择是有一个"创建时间"计数器,存储在抽象基础中,以便 case class PushInt(value: Int) extends AbstractOp(AbstractOp.nextIndex)
使用提取器,但在这种情况下,我将错过很好的功能,如hashCode,equals,toString的实现,更重要的是检查详尽的匹配.
所以我现在的问题是如何根据我的要求对我的结构进行建模.在Scala方面,任何可能的解决方案都是"正确的"吗?
我一定是在做一些愚蠢的错误.我有一个返回XML的服务器,<a><b>123</b></a>现在我想与该XML匹配.所以我写了类似的东西
xml match {
case <a><b>{_}</b></a> => true
}
Run Code Online (Sandbox Code Playgroud)
只要我不必处理多行XML文字,这就可以工作.所以重要的是服务器将整个XML作为单行发送给我.XML大到足以爆炸一行代码,但我无法弄清楚如何让它工作.
服务器发送<a><b>123</b><c>123</c><d>123</d><e>123</e><f>123</f></a>,我想这样做:
xml match {
case <a>
<b>{_}</b>
<c>{valueOfC}</c>
<d>{_}</d>
<e>{_}</e>
<f>{_}</f>
</a> => valueOfC
}
Run Code Online (Sandbox Code Playgroud)
但我总是得到一个MatchError.如果我在一行中写下所有内容就行了.所以问题是:如何在编写人类可读代码时匹配XML?
我当然试图通过谷歌找到答案.有趣的是,所有的例子都是单行或工作递归.
是否可以动态切换Lift提供的页面的标题,而无需为该特定情况编写额外的片段?
一个选项当然是,<lift:mySnippet><title>Default Title</title></lift:mySnippet>但我认为可能有一个选项<head_merge><title>New Title</title></head_merge>(插入第二个标题节点).
我不喜欢第一种方法,因为我不想将所有标题生成逻辑都放在一个片段中,并询问我在哪个页面等等.