小编F0R*_*0RR的帖子

Scala foreach奇怪的行为

我想在Scala中使用漂亮的单行迭代迭代值列表.

例如,这个效果很好:

scala> val x = List(1,2,3,4)
x: List[Int] = List(1, 2, 3, 4)

scala> x foreach println
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用占位符_,它会给我一个错误:

scala> x foreach println(_ + 1)
<console>:6: error: missing parameter type for expanded function ((x$1) =>x$1.$plus(1))
       x foreach println(_ + 1)
                         ^
Run Code Online (Sandbox Code Playgroud)

这是为什么?这里不能编译推断类型?

scala

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

在一个语句中从序列中查询几个NEXTVAL

基本上,我需要从序列中查询大约一千个NEXTVAL.我可以在一个循环中查询它们,或者我可以通过一个带有reeeeeally大表的连接来查询它们.

有没有更少的hacky方式?

UPD. 基本上,我有一个对象操作的时间表.每个对象都有一个生成的UUID或来自数据库的ID.在计算出最佳计划后,我需要将其写入DB,但表中的每个ID都来自一个序列.所以我需要查询该序列中的一些ID.问题是循环查询很慢,因为数据库离我很远,而且我不能在循环中执行数十个查询时松散几秒钟.所以我需要在一个查询中查询所有这些新ID.

sql oracle

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

具有给定稀疏性的随机简单连通图生成

我正在尝试找到一种有效的算法来生成具有给定稀疏性的简单连通图.就像是:

Input:
    N - size of generated graph
    S - sparseness (numer of edges actually; from N-1 to N(N-1)/2)
Output:
    simple connected graph G(v,e) with N vertices and S edges
Run Code Online (Sandbox Code Playgroud)

random algorithm graph

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

Scala中几个Seqs的懒惰笛卡尔积

我实现了一个简单的方法来生成笛卡尔积,Seq如下所示:

object RichSeq {
  implicit def toRichSeq[T](s: Seq[T]) = new RichSeq[T](s)
}

class RichSeq[T](s: Seq[T]) {

  import RichSeq._

  def cartesian(ss: Seq[Seq[T]]): Seq[Seq[T]] = {

    ss.toList match {
      case Nil        => Seq(s)
      case s2 :: Nil  => {
        for (e <- s) yield s2.map(e2 => Seq(e, e2))
      }.flatten
      case s2 :: tail => {
        for (e <- s) yield s2.cartesian(tail).map(seq => e +: seq)
      }.flatten
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

显然,这个很慢,因为它一次计算整个产品.有人在Scala中为这个问题实现了一个懒惰的解决方案吗?

UPD

好的,所以我在笛卡尔积上实现了一个非常愚蠢但是工作的迭代器版本.在这里发布给未来的爱好者:

object RichSeq {
  implicit def toRichSeq[T](s: Seq[T]) = …
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

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

在java中使用scala vararg方法

为什么所有scala vararg方法,当从java中使用时,似乎接受Seq变量,并且不能用作java本机vararg方法.这是一个错误吗?

例如,Buffer有方法def append(elems: A*): Unit.但在java中它有另一个签名:void append(Seq<A>).

scala scala-java-interop scala-collections

10
推荐指数
2
解决办法
1111
查看次数

丰富的图像滚动和放大android

我正在寻找一种方法来实现图像缩放和滚动它在Droid Comic Viewer中的实现方式.有没有快速的方法呢?如果没有,那么你能不能给出一些建议,至少在实施动力学滚动方面.

android scroll image-manipulation

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

找到ImageView相对于其显示图像的位置

所以这就是问题所在.我在ImageView中显示一个大图像,需要找到它相对于图像的位置.像这样:

?????????????????????????????????
? Image                         ? 
???>???????????????             ?
?   ? ImageView   ?             ?
?   ?             ?             ?
?   ???????????????             ?
?                               ?
?                               ?
?????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

UPD:由于存在一些误解,我将详细解释这个问题.

我有一张图片.实际上是一个位图.我在具有CENTER缩放类型的ImageView中显示它.假设图像比ImageView大,因此只显示图像的一部分.我想找到这部分相对于整个图像的位置.

android image

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

scala中条件过滤和排序的功能方式

我想对序列进行排序和/或过滤.基本上是这样的:

var result = getReallyLongSeq() // returns Seq[SomeClass]

if (doFilter) {
  result = result.filter( ... )
}

if (doSort) {
  result = result.sortWith( ... )
}
Run Code Online (Sandbox Code Playgroud)

现在,这是一种明显有效的方法,但是有更实用的方法吗?

functional-programming scala

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

使用node-oracle将硬编码字符串切成两半

我使用node-oracle连接到Oracle数据库.

当我从带有西里尔数据的表中选择值时,一切都很好,但如果我调用这样的procudure:

CREATE OR REPLACE PROCEDURE TEST_ENCODING (CUR OUT SYS_REFCURSOR) AS 
BEGIN
  open cur for
    select '????' as hello from dual; -- cyrillic hardcoded text
END TEST_ENCODING;
Run Code Online (Sandbox Code Playgroud)

然后从节点调用它:

connection.execute("call TEST_ENCODING(:1)", [new oracle.OutParam(oracle.OCCICURSOR)],
  function (err, result) {
    console.log(result)
  }
);
Run Code Online (Sandbox Code Playgroud)

结果是:( [ { HELLO: '??' } ]字符串被切成两半).

数据库配置如下:

NLS_LANGUAGE    AMERICAN
NLS_TERRITORY   AMERICA
NLS_CURRENCY    $
NLS_ISO_CURRENCY    AMERICA
NLS_NUMERIC_CHARACTERS  .,
NLS_CHARACTERSET    CL8MSWIN1251
NLS_CALENDAR    GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE   AMERICAN
NLS_SORT    BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT    DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT  HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT …
Run Code Online (Sandbox Code Playgroud)

oracle node.js node-oracle

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

为什么scala集合没有任何人类可读的方法,如.append,.push等

Scala集合有一堆可读,几乎可读的运营商如中:++:,但为什么没有任何人类可读的同义词样append

scala scala-collections

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