小编Joa*_*ert的帖子

IntelliJ IDEA:移动线?

我非常喜欢IntelliJ IDEA的"Move语句"快捷方式(Ctrl+ Shift+ / ).但是 - 我不确定这是否只是一个与ActionScript编辑相关的错误 - 移动语句并不总是我想要的,有时在编辑AS代码时它是不正确的.

所以我只想向上/向下移动一行线.Eclipse快捷方式是Alt+ / ,并且不会按语句移动.IntelliJ IDEA中是否有等价物?

keyboard-shortcuts intellij-idea

85
推荐指数
4
解决办法
5万
查看次数

过滤器的Scala集合类型

假设你有一个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)

types scala scala-2.8 scala-collections

20
推荐指数
2
解决办法
3618
查看次数

使用横向时UIWindow的大小错误

我有一个空的应用程序,没有涉及故事板或xib.我希望有一个隐藏的状态栏,只支持横向.同样,我不想仅在代码中进行这些更改,也不要触摸Info.plist.

问题

我创建了一个带控制器的UIWindow,它表示唯一支持的方向是landscape.在这种情况下,我的UIWindow是在纵向模式的维度中创建的,不会旋转.预期结果将是完全青色的屏幕.

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)

iphone landscape objective-c uiwindow ios

17
推荐指数
2
解决办法
2万
查看次数

"outer =>"究竟意味着什么?

是否有关于"outer =>"功能的文档?它看起来像一个带有推理类型的自我类型注释.但我觉得我错了.

如果是这种情况,是否只是表达访问权限的另一种方式super

trait A extends (B => C) {
  outer =>
  def apply(x: B): C = outer(x)
}
Run Code Online (Sandbox Code Playgroud)

scala

14
推荐指数
2
解决办法
726
查看次数

Case类的copy()方法抽象

我想知道是否有可能抽象出案例类的复制方法.基本上我有类似的东西sealed trait Op,然后像case class Push(value: Int) extends Opcase 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() …

scala copy

12
推荐指数
2
解决办法
1万
查看次数

使用元组作为参数列表调用方法

我想知道最好的方法是什么.

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)))的实现.

syntax scala tuples

10
推荐指数
1
解决办法
3194
查看次数

Findbugs和Maven 3.x

有没有人设法使用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)

findbugs maven

9
推荐指数
1
解决办法
1万
查看次数

集合中的Scala案例类

场景:我正在解析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方面,任何可能的解决方案都是"正确的"吗?

scala

6
推荐指数
1
解决办法
1938
查看次数

与多行XML案例匹配的模式

我一定是在做一些愚蠢的错误.我有一个返回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?

我当然试图通过谷歌找到答案.有趣的是,所有的例子都是单行或工作递归.

xml scala pattern-matching

6
推荐指数
1
解决办法
1611
查看次数

用Lift改变<title>

是否可以动态切换Lift提供的页面的标题,而无需为该特定情况编写额外的片段?

一个选项当然是,<lift:mySnippet><title>Default Title</title></lift:mySnippet>但我认为可能有一个选项<head_merge><title>New Title</title></head_merge>(插入第二个标题节点).

我不喜欢第一种方法,因为我不想将所有标题生成逻辑都放在一个片段中,并询问我在哪个页面等等.

scala dynamic lift title

4
推荐指数
1
解决办法
1468
查看次数