小编Joh*_*van的帖子

Clojure - 原始数组.length的反射警告

我在使用clojure中的java float数组上的实例方法时遇到了一些麻烦.具体来说,以下代码在调用时给出了反射警告.length

(defn make-matrix
  ([^floats fs]
   (let [len-fs (.length fs)]
     (cond (>= len-fs 16) (Matrix4. fs)
           (>= len-fs 9)  (Matrix3. fs)
           :else (throw (IllegalArgumentException. (str "Array must have at least 9 elements (found" len-fs ")")))))))
Run Code Online (Sandbox Code Playgroud)

根据我的理解,类型提示应该消除了解析调用的反射需求.length.我错过了什么?

primitive clojure

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

使Intellij在OSGI / Tycho模块之间链接源

我有一个大型的osgi项目,其中包含许多我想与Intellij一起使用的包/模块。当前,用户MANIFEST.MF在每个捆绑软件中编辑文件来管理依赖关系,并且使用tycho来填充pom.xml实际构建项目的文件。目标平台由maven构建为p2存储库。

我已经将该项目作为单个项目中的一堆Maven模块加载到了Intellij中,每个模块都有一个OSGI方面。在这一点上,一切工作都很好,但是我无法让Intellij来解决包之间的源。

具体而言,我在我的项目的两个模块,ABB引用的一类AB的清单从A包含该类的包中导入包。当我从A内部对类“跳转到定义”时,B它将带我到反编译的类文件,而不是模块中的源文件A。但是,当在Intellij项目中有多个没有tycho的maven模块时,此解决方案将自动发生。

我希望能够通过tycho构建此类模块之间的源。

osgi intellij-idea tycho maven

5
推荐指数
0
解决办法
370
查看次数

覆盖Salesforce Apex中抽象类的属性

我在apex中有一个抽象类,有几个属性我想在子类中重写.根据文档,属性支持覆盖和虚拟访问修饰符.但是,当我尝试在父类或子类中使用它们中的任何一个时,我得到一个错误,指出变量不能标记为虚拟/覆盖.以下是导致此错误的代码的传真:

public abstract class Row{
    public virtual double value{
        get{return value==null ? 0 : value;}
        set;
    }
}

public class SummaryRow extends Row{
    private list<Row> childRows;
    public override double value{
        get{
            totalValue = 0;
            for(Row childRow:childRows){
                totalvalue += childRow.value;
            }
            return totalValue;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

是不支持此功能,还是我缺少某些功能?

提前致谢.

properties salesforce apex-code

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

Scala Parser Combinators - 消耗直到匹配

我正在使用Scala中的本机解析器组合器库,我想解析输入的一些部分,但不解析其他部分.具体来说,我想丢弃我关心的输入之间的所有任意文本.例如,使用此输入:

begin

Text I care about
Text I care about

DONT CARE

Text I don't care about

begin

More text I care about
...
Run Code Online (Sandbox Code Playgroud)

现在我有:

object MyParser extends RegexParsers {
    val beginToken: Parser[String] = "begin"
    val dontCareToken: Parser[String] = "DONT CARE"
    val text: Parser[String] = not(dontCareToken) ~> """([^\n]+)""".r

    val document: Parser[String] = begin ~> text.+ <~ dontCareToken ^^ { _.mkString("\n") }
    val documents: Parser[Iterable[String]] = document.+
Run Code Online (Sandbox Code Playgroud)

但我不确定如何忽略之后DONT CARE直到下一个文本begin.具体来说,我不想对该文本的形式做任何假设,我只想在下一个begin语句中再次开始解析.

scala parser-combinators

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

Scala Parser Combinators:在流中解析

我在scala中使用本机解析器组合器库,我想用它来解析许多大文件.我已经设置了组合器,但是我要解析的文件太大而无法一次性读入内存.我希望能够通过我的解析器从输入文件流式传输并将其读回磁盘,这样我就不需要将它全部存储在内存中了.我当前的系统看起来像这样:

val f = Source.fromFile("myfile")
parser.parse(parser.document.+, f.reader).get.map{_.writeToFile}
f.close
Run Code Online (Sandbox Code Playgroud)

这会在解析时读取整个文件,我想避免使用它.

scala parser-combinators

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

Scala:在内部类型上获取TypeTag

我正在尝试使用TypeTag或者ClassTag为内部类型提供ClassTag带有类型参数的方法.具体来说,我有

trait Baz
trait Foo { type Bar <: Baz }
Run Code Online (Sandbox Code Playgroud)

我想做点什么

import scala.reflect.runtime.universe._
import scala.reflect._
typeTag[Foo#Bar] // or maybe
classTag[Foo#Bar]
Run Code Online (Sandbox Code Playgroud)

但我得到一个'没有打字标签'的错误.我的最终目标是提供ClassTag类似这样的东西

import scala.reflect.ClassTag
class Doer[A,B]()(implicit ctA:ClassTag[A], ctB:ClassTag[B])
object Fooer extends Doer[Foo, Foo#Bar]()(classTag[Foo], classTag[Foo#Bar])
Run Code Online (Sandbox Code Playgroud)

reflection scala

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

Scala/Java:生成一组非重复随机数

我需要从Scala中的列表中随机抽取n个元素的子集,我想知道是否有一种方便的方法可以这样做,而无需手动检查n个元素中的每一个都是唯一的.目前我有这样的事情:

import util.Random

def sample(itms:List[A], sampleSize:Int) {
  var numbersSeen = Set[Int]()
  var sampled = List[A]()
  val itmLen = itms.size()
  var sampleIdex = Random.nextInt(itmLen)
  while(sampled < sampleSize) {
    if(numbersSeen.contains(sampleIdex)){
      sampleIdex = Random.nextInt(itmLen)
    } else {
      numbersSeen.add(sampleIdex)
      sampled.add(itms(sampleIdex))
    }
  }
  sampled
}
Run Code Online (Sandbox Code Playgroud)

我希望有更多的东西优雅可以做要么产生在一个范围内的整数的非重复随机列表或随机样本n从一个列表中的元素.

java random scala

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