在斯卡拉2.10新的未来用来每一个地方的操作异步调用操作(包括执行上下文map
,filter
等等).这是否意味着每个操作将始终通过执行上下文单独调用,或者当使用相同的执行上下文链接多个转换/过滤器时,是否可能优化此步骤?
即如果这样做f.map(...).filter(...).map(...)
,所有具有相同的执行上下文,这将调用execute()
一次(因为它足够聪明,从上面组成同步函数),或三次?
如果scala未来没有进行上述优化,是否有一个替代框架更适合长链组合,它确实做到了上述?
我有一个非常具体的要求.有三个或四个衬垫解决方案.我需要一个衬垫解决方案.
假设我有一个像这样的数组:
[["Andorra", "Andorra"], ["United Arab Emirates", "United Arab Emirates"],
["Afghanistan", "Afghanistan"], ["Antigua & Barbuda", "Antigua & Barbuda"],
["Anguilla", "Anguilla"], ["Albania", "Albania"], ["Armenia", "Armenia"],
["Angola", "Angola"]]
Run Code Online (Sandbox Code Playgroud)
我希望["安圭拉","安圭拉"]作为我的第一个元素,而其他的则按降序排列.
有没有办法实现这个目标?(如果可能,一个班轮)
我有这个函数,它获取字符串和字符串列表的列表,然后返回每个列表中包含传递的字符串但没有传递字符串的所有元素的列表.
myfilter([["a","b"],["c","d"],["e","a","x"]], "a") -> ["b","e","x"]
fun myfilter(list : string list list, s : string) =
case list of
[] => []
|xs::xs' => case all_except_option(s, xs) of (* helper function that does it for a string and a list of strings *)
NONE => []
|SOME n => if n = xs
then myfilter(xs',s)
else n@myfilter(xs',s)
Run Code Online (Sandbox Code Playgroud)
现在这是你可以看到的一个递归函数,我想将它转换为尾递归函数.我熟悉尾递归的例子,但我没有看到如何在上面的函数中做到这一点