小编Ger*_*mán的帖子

Scala:关键字作为包名称

我正在尝试使用Java库(没有可用的源代码)来定义一些xxx.xxx.object包.Scala抱怨软件包名称中存在"对象",因此我无法从中导入,也无法使用完全限定名称引用其类.

有办法解决吗?

scala

18
推荐指数
2
解决办法
2342
查看次数

Graphics2D:白底黑?

我确定这是一个非常愚蠢的问题,但我找不到答案,我对Java2D API没有经验.我正在尝试创建一个图像并将其写入GIF或PNG,我希望它在白色背景上使用黑色笔.如果我没有设置任何颜色,我会变成黑色的白色.如果我使用setPaint()(用于后续绘制操作),我会用整个画布重新绘制该颜色.以下示例将整个事件呈现为黑色.

示例是在Scala中,但您明白了.随便用Java回答!

  val bi = new BufferedImage(200, 400, BufferedImage.TYPE_BYTE_BINARY )
  val g = bi.createGraphics
  g.setBackground(Color.WHITE)
  g.setPaint(Color.BLACK)
  g.draw(new Rectangle(10, 10, 30, 20))
Run Code Online (Sandbox Code Playgroud)

java graphics

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

Tomcat:热部署新的jar

你能在Tomcat 5上热部署JAR文件吗?我们的想法是避免重新启动Tomcat,并且仍然能够从新添加的JAR中加载(通过反射)某些类.可以吗?怎么样?对生产系统不建议吗?谢谢

编辑:我的场景需要添加新的JAR文件,其名称事先不知道.服务器可以"观察"JAR目录而不是特定的JAR吗?

java tomcat jar

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

Scala:如何从某个集合创建XML节点

如果你有类似的东西:

val myStuff = Array(Person("joe",40), Person("mary", 35))
Run Code Online (Sandbox Code Playgroud)

如何使用该数据创建XML值作为节点?我知道如何在XML表达式中使用{braces}来放置值,但这是一组值.我需要明确迭代还是有更好的东西?

val myXml = <people>{ /* what here?! */ }</people>
Run Code Online (Sandbox Code Playgroud)

结果值应该是这样的:

<people><person><name>joe</name><age>40</age></person>
<person><name>mary</name><age>39</age></person></people>
Run Code Online (Sandbox Code Playgroud)

xml scala

13
推荐指数
2
解决办法
8317
查看次数

如何转换某些数组元素的功能方法?

我有一个带有复选框的项目列表的Scala应用程序,以便用户选择一些,然后单击一个按钮将它们向上移动一个位置(左).我决定编写一个函数来移动某些符合给定谓词的任意类型的元素.所以,如果你有这些元素:

a b c D E f g h I
Run Code Online (Sandbox Code Playgroud)

并且谓词是"大写字符",该函数将返回:

a b D E c f g I h
Run Code Online (Sandbox Code Playgroud)

简而言之,符合谓词的任何连续元素序列都与其左侧的单个元素交换.

我想出了以下丑陋的命令式实现.我希望看到一个很好的,希望可读的功能解决方案.

def shiftUp[T](a:Array[T], shiftable: T => Boolean) = {
    val s = new Array[T](a.length)
    var i = 0
    var j = 0
    while(i < a.length)
    {
        if(!shiftable(a(i)) && i < a.length - 1 && shiftable(a(i+1)))
        {
            var ii = i + 1
            while(ii < a.length && shiftable(a(ii)))
            {
                s(j) = a(ii)
                ii = ii+1
                j = j+1
            }
            s(j) …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

7
推荐指数
2
解决办法
2350
查看次数

scala case class equals(==)没有按预期工作

我必须在这里遗漏一些愚蠢的东西.我有这个:

case class Color(val rgb:Int) {
   private val c = rgb - 0xff000000
   val r = (c & 0xff0000) >> 16
   val g = (c & 0x00ff00) >> 8
   val b = (c & 0x0000ff)
}

case object Red extends Color(0xffff0000)
case object Green extends Color(0xff00ff00)
case object Blue extends Color(0xff0000ff)
Run Code Online (Sandbox Code Playgroud)

然后我希望这打印真实:

val c = Color(0xff00ff00)
println(c == Green)
Run Code Online (Sandbox Code Playgroud)

为什么不呢?

scala equality case-class

7
推荐指数
1
解决办法
2805
查看次数

如何在Ant中使用GCJ?

我对Apache Ant和GCJ都很新,而且我很难通过Ant使用GCJ进行构建.

我的应用程序是在Scala中,所以我需要使用GCJ将.class文件作为源代码.使用Ant将.scala编译为.class没问题.

首先,我想出了如何手动将.class文件编译为.o(对象),这样:

gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o
Run Code Online (Sandbox Code Playgroud)

在这里看到Ant通过javac标记支持GCJ编译.所以我认为这应该工作:

<target name="gcjCompile" depends="compile">
    <mkdir dir="${object.dir}" />
    <javac srcdir="${build.dir}"
           destdir="${object.dir}"
           compiler="gcj"
           executable="C:/gcc/gcc-4.3/bin/gcj.exe"
           classpathref="gcjProject.classpath">
        <include name="**/*.class"/>
    </javac>
</target>
Run Code Online (Sandbox Code Playgroud)

但这个javac任务什么都不做,我没有错.有线索吗?谢谢

java ant gcj

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

如何为SBT创建编译器Action

我想创建一个Action来自动化GCJ编译.由于我无法使用Ant,我决定尝试使用SBT.文档说明了如何创建Action以及如何运行外部流程.我还没有看到如何重用java和scala编译器Actions存在的目录树遍历.在这种情况下,我的输入文件将是某个根文件夹下的所有.class文件.我还需要为GCJ指定一个特定的类路径.任何指针也将受到赞赏.

scala gcj sbt

5
推荐指数
1
解决办法
593
查看次数

C++按值传递struct或object

我有这个:

enum Units { Pounds, Kilos };

struct Configuration
{
    const Units units;
    const char *name;

    inline Configuration(Units pUnits, char *pName) : units(pUnits)
    {
        name = strdup(pName);
    }

    inline ~Configuration() { free((void *)name); }
};
Run Code Online (Sandbox Code Playgroud)

我正在将其中一个传递给这样的方法:

Configuration cc(Kilos, "abc");
cdao->write(cc);
Run Code Online (Sandbox Code Playgroud)

我从这里得到了令人讨厌的崩溃,直到我尝试重新定义方法来引用:

Configuration cc(Kilos, "abc");
cdao->write(&cc);
Run Code Online (Sandbox Code Playgroud)

现在一切正常.

但是,价值结构怎么可能与内存紧密相连?

c++ memory-management

3
推荐指数
1
解决办法
3104
查看次数

SwiftUI 暂停/恢复旋转动画

到目前为止,我已经看到了以下停止动画的技术,但我在这里寻找的是旋转视图停止在它当时的角度而不是返回到 0。

struct DemoView: View {
    @State private var isRotating: Bool = false
    var foreverAnimation: Animation {
        Animation.linear(duration: 1.8)
            .repeatForever(autoreverses: false)
    }
    var body: some View {
        Button(action: {
            self.isRotating.toggle()
        }, label: {
            Text("").font(.largeTitle)
            .rotationEffect(Angle(degrees: isRotating ? 360 : 0))
            .animation(isRotating ? foreverAnimation : .linear(duration: 0))
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎将旋转角度设为 360 或 0 不会让我将其冻结在中间角度(并最终从那里恢复)。有任何想法吗?

swiftui

3
推荐指数
1
解决办法
594
查看次数

Scala:使用谓词为子列表拆分列表

我只是有一个用例,我需要将列表拆分为n个子列表,以便从原始列表中按顺序获取元素并对子列表的谓词为true进行分组(当它为false时,启动新的子列表) .我没有在标准库中找到这个功能,我认为尝试以功能方式解决它是一个很好的练习(因为我远非功能大师).

以下是我提出的代码.但我怀疑它可以改进很多.你能帮我找一个更好的代码编码方法吗?

class ListWithSplitter[A](val theList:List[A])
{
  private def sublistWhile(list:List[A], pred:(List[A] => Boolean)):(List[A],List[A]) =
  {
    def combine(okList:List[A], remaining:List[A], pred:(List[A] => Boolean)):(List[A],List[A]) =
    {
      if(pred(okList ::: remaining.head :: Nil))
        combine(okList ::: remaining.head :: Nil, remaining.tail, pred)
      else
        (okList, remaining)
    }

    list match {
      case Nil => (Nil, Nil)
      case x :: Nil => (list, Nil)
      case x :: xs => combine(List(x), xs, pred)
    }
  }

  private def combinedSplit(list:List[A], pred:(List[A] => Boolean)):List[List[A]] =
  {
    val r = sublistWhile(list, pred)
    r match { …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

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

Subclipse:如何保持分支同步?

¿我如何使用subclipse插件执行此处描述的操作,这在命令行中非常简单?

我想我会确保我的工作副本与分支同步,然后我会去"合并......".我不知道该怎么做弹出窗口!

编辑:我已经读过某个地方,在弹出窗口中我必须将合并范围指示为一系列主干修订:从打开分支的修订版到HEAD.说得通.但我现在正在尝试使用测试项目,并且我没有在指向分支的工作副本上获得新的主干更改.我一定是在遗漏某些东西,或者它不起作用!

注意:Subclipse 1.4.8

eclipse subclipse svn

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

Scala解析器组合器:如何解析"if(x)",如果x可以包含")"

我试图让这个工作:

def emptyCond: Parser[Cond] = ("if" ~ "(") ~> regularStr <~ ")" ^^ { case s => Cond("",Nil,Nil) }
Run Code Online (Sandbox Code Playgroud)

其中regularStr被定义为接受许多东西,包括")".当然,我希望这是一个可接受的输入:if(foo()).但对于任何if(x),它将")"作为regularStr的一部分,因此这个解析器永远不会成功.

我错过了什么?

编辑:

regularStr不是正则表达式.它定义如下:

  def regularStr = rep(ident | numericLit | decimalLit | stringLit | stmtSymbol) ^^ { case s => s.mkString(" ") }
Run Code Online (Sandbox Code Playgroud)

符号是:

  val stmtSymbol = "*" | "&" | "." | "::" | "(" | ")" | "*" | ">=" | "<=" | "=" | 
               "<" | ">" | …
Run Code Online (Sandbox Code Playgroud)

scala parser-combinators

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