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) 除了:
case class A
Run Code Online (Sandbox Code Playgroud)
...... 非常有用的案例?
为什么我们需要使用case的match?岂不:
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)
...?
我有这三个文件:
$ 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) 我正在使用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)
编译器仍然发出警告.
什么可以解决方案?
我一直在试着这几个小时.
我有两个多维数组
$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) 我有68个钢琴样品,每个大约。174 kB,Ogg数据,Vorbis音频,立体声,s16、44100 Hz,352 kb / s,4秒。
我需要同时发挥他们的不同组合(音乐术语:谐波和弦/间隔),例如1st + 7th,14th + 22nd等等。
另外:当前的“播放”需要一个选项来在t毫秒后停止播放。
一个明显的解决方案似乎是使用SoundPool。设置好之后maxStreams = 20,我将.load()所有样本都放入了。对于每个播放请求,future都会创建一个线程(确实是:Scala的),等待给定t millis,然后停止所有声音。
它似乎正常工作。
这样SoundPool,当同时播放2个(或更多)声音时,有时可能无法完全同时启动它们,当然可以听到它们的开始时间略有不同。但是,大多数时候都可以。
停止还有一个问题,有时一双可以“持续”更长的时间,但同样,通常在我想要的时候结束。
最后,真正奇怪的是:每.play()一个都是第一个之后的:
... 不会发出声音!
Android是否向我们提供了更可靠(就时序一致性而言)使用的声音池实现?
如果我创建68个线程(每个声音一个线程),也许会更好?...我不这么认为。
现在,我花了一段时间才弄明白为什么我的递归以某种方式成功地炸毁堆栈.这就是导致这个问题的部分:
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),会发生什么.<
为什么?!
我认为应该使用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-shell上irc.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) 如果我写下以下内容:
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]().
那可能吗?
我知道它有效,只是检查.我想知道系统无法释放内存或应用程序"悬挂"在后台或此类事情.
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线程构建的,所以它可能与在应用程序中使用普通线程一样合法吗?
我有一个具有正自然值的循环缓冲区,例如
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.
如何最佳地做到这一点?
我正在尝试访问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也无济于事.