小编Mic*_*Rus的帖子

"案例"匿名函数如何在Scala中真正起作用?

Dast Scala,

scala> val f1: ((Int, Int)) => Int = { case (a, b) => a + b }
f1: ((Int, Int)) => Int = <function1>

scala> val f2: (Int, Int) => Int = { case (a, b) => a + b }
f2: (Int, Int) => Int = <function2>
Run Code Online (Sandbox Code Playgroud)

呵呵?

scala> f1(1, 2)
res2: Int = 3
Run Code Online (Sandbox Code Playgroud)

好...

scala> def takesIntInt2Int(fun: (Int, Int) => Int) = fun(100, 200)
takesIntInt2Int: (fun: (Int, Int) => Int)Int

scala> def takesTuple2Int(fun: ((Int, Int)) …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching

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

向Scala添加"case"关键字背后的原因是什么?

除了:

case class A
Run Code Online (Sandbox Code Playgroud)

...... 非常有用的案例

为什么我们需要使用casematch?岂不:

x match {
  y if y > 0 => y * 2
  _ => -1
}
Run Code Online (Sandbox Code Playgroud)

... 漂亮和简洁?

或者为什么我们需要case在函数取元组时使用?说,我们有:

val z = List((1, -1), (2, -2), (3, -3)).zipWithIndex
Run Code Online (Sandbox Code Playgroud)

现在,不是:

z map { case ((a, b), i) => a + b + i }
Run Code Online (Sandbox Code Playgroud)

...... 方式不仅仅是:

z map (((a, b), i) => a + b + i)
Run Code Online (Sandbox Code Playgroud)

...?

syntax scala pattern-matching

12
推荐指数
3
解决办法
3137
查看次数

Grep的"无效范围结束" - 错误或功能?

我有这三个文件:

$ cat pattern-ok 
['\-]
$ cat pattern-buggy 
[\-']
$ cat text 
abc'def-ghi
Run Code Online (Sandbox Code Playgroud)

现在,以下是我不知道的错误或正则表达式功能?

$ cat text | grep -f pattern-ok 
abc'def-ghi
$ cat text | grep -f pattern-buggy
grep: Invalid range end
Run Code Online (Sandbox Code Playgroud)

我正在使用:

$ grep --version | head -n 1
grep (GNU grep) 2.20
Run Code Online (Sandbox Code Playgroud)

regex grep gnu

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

如何在scaladoc中生成标准库类型的链接?

我正在使用sbt 0.13.7和Scala 2.11.4.

在我build.sbt,我有:

autoAPIMappings := true
Run Code Online (Sandbox Code Playgroud)

在一个File.scala:

/** scaladoc link to [[scala.concurrent.duration.FiniteDuration]] */
Run Code Online (Sandbox Code Playgroud)

跑步时sbt doc,我得到:

[warn] ...:5: Could not find any member to link for "scala.concurrent.duration.FiniteDuration".
[warn] /** scaladoc link to [[scala.concurrent.duration.FiniteDuration]] */
[warn] ^
Run Code Online (Sandbox Code Playgroud)

现在,当我替换autoAPIMappings := true为:

apiMappings += (scalaInstance.value.libraryJar ->
                url(s"http://www.scala-lang.org/api/${scalaVersion.value}/"))
Run Code Online (Sandbox Code Playgroud)

编译器仍然发出警告.

什么可以解决方案?

scala sbt scaladoc

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

比较两个多维数组然后创建唯一的数组

我一直在试着这几个小时.

我有两个多维数组

    $newData (
    [0] => Array(
        [id] => 1
        [name] => John
        [sex] => male
    )
    [1] => Array(
        [id] => 2
        [name] => Kenny
        [sex] => male
    )
    [2] => Array(
        [id] => 3
        [name] => Sarah
        [sex] => female
    )
    [3] => Array(
        [id] => 4
        [name] => George
        [sex] => male
    )
)

$oldData (
    [0] => Array(
        [id] => 3
        [name] => Sarah
        [sex] => female
    )
    [1] => Array(
        [id] => 4
        [name] => …
Run Code Online (Sandbox Code Playgroud)

php arrays unique multidimensional-array

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

Android的SoundPool停顿,停滞,有时根本无法播放

用例

我有68个钢琴样品,每个大约。174 kB,Ogg数据,Vorbis音频,立体声,s16、44100 Hz,352 kb / s,4秒。

我需要同时发挥他们的不同组合(音乐术语:谐波和弦/间隔),例如1st + 7th14th + 22nd等等。

另外:当前的“播放”需要一个选项来在t毫秒后停止播放。

我尝试过的

一个明显的解决方案似乎是使用SoundPool。设置好之后maxStreams = 20,我将.load()所有样本都放入了。对于每个播放请求,future都会创建一个线程(确实是:Scala的),等待给定t millis,然后停止所有声音。

似乎正常工作。

问题

  • 这样SoundPool,当同时播放2个(或更多)声音,有时可能无法完全同时启动它们,当然可以听到它们的开始时间略有不同。但是,大多数时候都可以。

  • 停止还有一个问题,有时一双可以“持续”更长的时间,但同样,通常在我想要的时候结束。

  • 最后,真正奇怪的是:每.play()一个都是第一个之后的:

    • 关闭(或什至仅变暗!)显示或
    • 应用启动...

    ... 不会发出声音

Android是否向我们提供了更可靠(就时序一致性而言)使用的声音池实现?

如果我创建68个线程(每个声音一个线程),也许会更好?...我不这么认为。

audio time android soundpool

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

用于Scala中的理解评估的奇怪(?)

现在,我花了一段时间才弄明白为什么我的递归以某种方式成功地炸毁堆栈.这就是导致这个问题的部分:

scala> for {
     |   i <- List(1, 2, 3)
     |   j = { println("why am I evaluated?"); 10 } if false
     | } yield (i, j)
why am I evaluated?
why am I evaluated?
why am I evaluated?
res0: List[(Int, Int)] = List()
Run Code Online (Sandbox Code Playgroud)

这不是疯了吗?为什么要评估j = ...它是否结束if false,因此永远不会被使用?

我学到了什么,而不是{ println ... }你有一个递归调用(和递归防护而不是if false),会发生什么.<

为什么?!

recursion scala for-comprehension

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

如何将字符串发送到gnome-shell扩展?

我认为应该使用D-Bus.基本上,我想要这样的东西 - https://wiki.gnome.org/Gjs/Examples/DBusClient - 但反过来说.

在扩展中,会有一个功能:

function f(s) { doSomethingWithS; }
Run Code Online (Sandbox Code Playgroud)

运行后会调用此函数:

$ <something> "abc"
Run Code Online (Sandbox Code Playgroud)

...在终端,有s == "abc".


之后从@Jasper和@owen在建议#gnome-shellirc.gnome.org,我改编自一些代码https://github.com/GNOME/gnome-shell/blob/master/js/ui/magnifierDBus.js:

const St = imports.gi.St;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Main = imports.ui.main;

let text;

function init() {
    text = new St.Label({ text: "0:0", style_class: 'panel-text' });
}

function enable() {
    Main.panel._rightBox.insert_child_at_index(text, 0);
}

function disable() {
    Main.panel._rightBox.remove_child(text);
}

const TextInTaskBarIface = '<node> \
<interface name="com.michalrus.TextInTaskBar"> \
<method name="setText"> \ …
Run Code Online (Sandbox Code Playgroud)

dbus gnome-shell-extensions gjs

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

要求用户在Scala的方法中提供[Type]?

如果我写下以下内容:

class A

class B {
  def add[T <: A]() = { ... }
}
Run Code Online (Sandbox Code Playgroud)

那么我如何要求用户T在他打电话时提供该类型B.add?这两个调用编译:

class C extends A

class D extends A {
  val b = new B
  b.add()      // 1.
  b.add[C]()   // 2.
}
Run Code Online (Sandbox Code Playgroud)

我想1.生成编译时错误,而不是默认为b.add[D]().

那可能吗?

generics inheritance scala

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

在Android应用程序中使用`scala.actors.Actor`对象是否可以?

我知道它有效,只是检查.我想知道系统无法释放内存或应用程序"悬挂"在后台或此类事情.

import scala.actors.Actor
import android.util.Log

object Player extends Actor {

  start

  def act {
    loop {
      react {
        case x => Log.v("actor", "received: " + x)
      }
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

使用常规线程,Actor 比使用并发性更容易掌握.我想scala.actors是基于JVM线程构建的,所以它可能与在应用程序中使用普通线程一样合法吗?

android scala actor

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

在保持顺序的同时对循环缓冲区进行分区

我有一个具有正自然值的循环缓冲区,例如

  1  5
4      2
11     7
  2  9
Run Code Online (Sandbox Code Playgroud)

我们将把它分成两个连续的部分,同时保持这个顺序.这个例子中的这两部分可能是:

  • (4 1 5) 而且 (2 7 9 2 11),
  • (7 9 2 11 4)而且(1 5 2),
  • 等等

我们的想法是保持秩序,并采取两个连续的后续序列.

现在的问题是对它进行分区,使这些子序列的总和彼此接近,即总和之间的差值必须最接近于零.

在这种情况下,我相信解决方案将是:(2 7 9 2)(11 4 1 5)分别20和,和21.

如何最佳地做到这一点?

algorithm

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

Google通讯录API - 只读访问权限

我正在尝试访问contacts.readonly范围,同时在Google Developers Console中的项目API中启用了Contacts API.

$ export client_id='**********************************************.apps.googleusercontent.com'
$ export scope='https://www.googleapis.com/auth/contacts.readonly'
$ curl -d "client_id=${client_id}&scope=${scope}" https://accounts.google.com/o/oauth2/device/code
{
  "error" : "invalid_scope",
  "error_description" : "Not authorized to request the scopes: [https://www.googleapis.com/auth/contacts.readonly]",
  "error_uri" : "http://code.google.com/apis/accounts/docs/OAuth2.html"
}
Run Code Online (Sandbox Code Playgroud)

当我将范围更改为读写时,这有效:

$ export scope='https://www.google.com/m8/feeds'
$ curl -d "client_id=${client_id}&scope=${scope}" https://accounts.google.com/o/oauth2/device/code
{
  "device_code" : "*********************************************",
  "user_code" : "********",
  "verification_url" : "https://www.google.com/device",
  "expires_in" : 1800,
  "interval" : 5
}
Run Code Online (Sandbox Code Playgroud)

在控制台中添加Google+ API也无济于事.

google-api google-contacts-api google-plus

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