我在Elasticsearch中放了2个文件:
curl -XPUT "http://localhost:9200/vehicles/vehicle/1" -d'
{
"model": "Classe A"
}'
curl -XPUT "http://localhost:9200/vehicles/vehicle/2" -d'
{
"model": "Classe B"
}'
Run Code Online (Sandbox Code Playgroud)
为什么此查询返回2个文档:
curl -XPOST "http://localhost:9200/vehicles/_search" -d'
{
"query": {
"query_string": {
"query": "model:\"Classe A\""
}
}
}'
Run Code Online (Sandbox Code Playgroud)
而这一个,只有第二个文件:
curl -XPOST "http://localhost:9200/vehicles/_search" -d'
{
"query": {
"query_string": {
"query": "model:\"Classe B\""
}
}
}'
Run Code Online (Sandbox Code Playgroud)
我希望弹性搜索匹配我传递给查询参数的确切短语,使用空格,我该怎么做?
在haskell,人们可以写:
containsTen::Num a => Eq a => [a] -> Bool
containsTen (x : y : xs)
| x + y == 10 = True
| otherwise = False
Run Code Online (Sandbox Code Playgroud)
是否有可能在伊德里斯写一些相同的东西,而不用它ifThenElse(我的真实案例比上面的更复杂)?
我想编写一个以Nat为参数的函数,并且如果此nat不能被3整除,则返回此nat.
例如 :
def myFunction[N <: Nat](n :N)(implicit ev: /* what do I put here that say not divible by 3 ? */): N = n
Run Code Online (Sandbox Code Playgroud)
要做到这一点,我必须写一些说"N不能被_3整除"的东西,或者"Mod.Aux [N,_3,_0]是空类型"
我怎么能在无形的情况下做到这一点?
随后的代码:
<span>Label1 Label2</span>
<span style="float:left"><span>Value</span></span>
Run Code Online (Sandbox Code Playgroud)
双击"值"字时,选择Label2(高位)但不选择Label1.为什么会这样?
如果只选择"值"字而不选择"标签"字,我该怎么办?
实例:http://codepen.io/anon/pen/IHDzj
编辑:此错误仅存在于Chrome中
当在javascript(forEach,map,filter等)中使用Array API的高阶函数时,有两种方法可以传递"this"变量:
myArray.forEach(function(value) {
this.aContextualFunction();
}, this);
Run Code Online (Sandbox Code Playgroud)
要么
var self = this;
myArray.forEach(function(value) {
self.aContextualFunction();
});
Run Code Online (Sandbox Code Playgroud)
哪一个更好?优缺点都有什么 ?
我试图在Idris中写一个函数,它通过传递Vect的大小和一个在参数中取索引的函数来创建一个Vect.到目前为止,我是这样的:
import Data.Fin
import Data.Vect
generate: (n:Nat) -> (Nat -> a) ->Vect n a
generate n f = generate' 0 n f where
generate': (idx:Nat) -> (n:Nat) -> (Nat -> a) -> Vect n a
generate' idx Z f = []
generate' idx (S k) f = (f idx) :: generate' (idx + 1) k f
Run Code Online (Sandbox Code Playgroud)
但我想确保参数中传递的函数仅采用小于Vect大小的索引.我试过了:
generate: (n:Nat) -> (Fin n -> a) ->Vect n a
generate n f = generate' 0 n f where
generate': (idx:Fin n) -> …Run Code Online (Sandbox Code Playgroud) 我有一个Nat的HList,我想要映射它
object NatToString extends Poly1 {
implicit def caseNat = at[Nat](_.toString)
}
val list = _5 :: _3 :: HNil
list.map(NatToString)
Run Code Online (Sandbox Code Playgroud)
此代码不编译并抛出:
找不到参数映射器的隐含值:
shapeless.ops.hlist.Mapper [Main.Nat_to_String.type,shapeless.:: [shapeless.Nat._5,shapeless.:: [shapeless.Nat._3,shapeless.HNil]] ]
但是,如果我用Int(或String,或List等)代替Nat做同样的事情,它就完美无缺.
我如何映射Nat的HList?
在 idris 中,如何限制代数数据类型中的参数类型?
在haskell中,我会这样做:
data Foo = Bar {x :: Integer, str :: String}
Run Code Online (Sandbox Code Playgroud)
我可以在伊德里斯这样做吗?
我有一个数据框架,其中有子类别,并且想要每个这些子类别的最后一个元素。
val windowSpec = Window.partitionBy("name").orderBy("count")
sqlContext
.createDataFrame(
Seq[(String, Int)](
("A", 1),
("A", 2),
("A", 3),
("B", 10),
("B", 20),
("B", 30)
))
.toDF("name", "count")
.withColumn("firstCountOfName", first("count").over(windowSpec))
.withColumn("lastCountOfName", last("count").over(windowSpec))
.show()
Run Code Online (Sandbox Code Playgroud)
给我一些奇怪的东西:
+----+-----+----------------+---------------+
|name|count|firstCountOfName|lastCountOfName|
+----+-----+----------------+---------------+
| B| 10| 10| 10|
| B| 20| 10| 20|
| B| 30| 10| 30|
| A| 1| 1| 1|
| A| 2| 1| 2|
| A| 3| 1| 3|
+----+-----+----------------+---------------+
Run Code Online (Sandbox Code Playgroud)
如我们所见,first返回的值是正确计算的,但last不是,它始终是列的当前值。
是否有人可以解决我想要的事情?
我正在读一个文件,我想用第一行做一些事情,还有其他所有其他行
let lines = System.IO.File.ReadLines "filename.txt" |> Seq.map (fun r -> r.Trim())
let head = Seq.head lines
let tail = Seq.tail lines
Run Code Online (Sandbox Code Playgroud)
```
问题:tail由于TextReader关闭,调用失败.这意味着Seq评估两次:一次得到head一次得到tail.
我怎样才能获得firstLine和lastLines,同时保持Seq和不重新评估Seq?
签名可以是,例如:
let fn: ('a -> Seq<'a> -> b) -> Seq<'a> -> b
Run Code Online (Sandbox Code Playgroud) 我想要轮询一个响应速度可能很慢的 HTTP API,因此我不想同时多次调用此 API。
我想做的一个例子可能是:
const interval = Rx.Observable.interval(250).take(5); // Poll every 250ms
function simulateMaybeSlowHttpCall() {
return interval.delay(500).take(1); // The service takes 500ms to answer
}
interval
.mergeMap(val =>simulateMaybeSlowHttpCall().map(x => val), 1) // max concurrent is 1
.subscribe(val => console.log(val));
Run Code Online (Sandbox Code Playgroud)
此处,此代码将显示 1 2 3 4 5
但我不想打无用的电话。上面的代码运行 250*5 = 1250 毫秒,1 次调用需要 500 毫秒,所以我想显示:
1 3 5
所以我的问题是:当设置并发1(或任何其他值)时,如何丢弃所有未立即完成的调用?
JsFiddle: https: //jsfiddle.net/zra3zxhs/63/
idris ×3
scala ×3
javascript ×2
shapeless ×2
apache-spark ×1
f# ×1
guard-clause ×1
html ×1
html5 ×1
observable ×1
rxjs ×1
syntax ×1