小编Law*_*eld的帖子

Scala抽象类型和多态性

这个Scala教程让我很困惑; 在Node抽象类型似乎并不以下多态性的传统规则...

type Node <: NodeIntf                // NodeIntf is assignable to Node.
abstract class NodeIntf {
  def connectWith(node: Node): Edge
}
class NodeImpl extends NodeIntf {
  def connectWith(node: Node): Edge = {
    val edge = newEdge(this, node)   // NodeImpl (this) is assignable to NodeIntf.
    edges = edge :: edges
    edge
  }
}
protected def newEdge(from: Node, to: Node): Edge
Run Code Online (Sandbox Code Playgroud)

如果Node = NodeIntfNodeIntf = NodeImpl,那我们为什么不能Node = NodeImpl呢?我问,因为显然上面的代码不会编译 - 为什么必须使用'自键型引用'?(见教程)

scala

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

使用 TypeScript 在现有对象上定义 getter/setter

我如何使用 TypeScript 编写以下代码?

document.__defineGetter__('cookie', function() { ... });
document.__defineSetter__('cookie', function(v) { ... });
Run Code Online (Sandbox Code Playgroud)

提前致谢!

(ps这假设document存在,但document.cookie不......)

properties typescript typescript2.0

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

当 AWS Lambda 超时时会发生什么?

据我了解,当 Lambda 超时时,它会返回错误。

不过,一旦 Lambda 超时,我想知道它是否会立即被 AWS 终止,或者它是否可以在后台继续运行任意时间(可以这么说,与原始请求分离)。

我问这个问题是因为在我的情况下,当 Lambda 超时时,该 Lambda 内的所有处理也会立即停止,这一点很重要。如果 AWS 不能保证这一点,那么我将需要实施自己的措施来确保这一点,即定期检查时钟并在超时后手动停止执行。


(ps,如果 Lambda 在超时时立即被杀死,我想知道 AWS 如何实现将 Lambda 保持在温暖的初始化状态以供后续调用。即,它不能简单地在超时时杀死进程,否则 Lambda 将被下次冷了……)

amazon-web-services aws-lambda aws-lambda-edge

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

确定是否已等待任务

如何确定任务是否已被等待/是否已检查其结果?

我有一个已创建和激活List的背景Task,但由于异常行为可能没有等待。在我的“finally”块中,我需要迭代这个列表和await那些尚未等待的任务,以防止在 GC 时引发它们的潜在异常。

编辑

我的解决方案:

首先,感谢 Steve 清除了我对 .NET 4.5 中如何处理未观察到的异常的过时理解。这是非常有趣的。但是,我仍然对从调用方法中引发这些异常感兴趣,所以我想出了以下简单的帮助器类来提供对Tasks 的简单管理,这些s 不会立即被观察到:

/// <summary>
/// Collection of unobserved tasks.
/// </summary>
public class TaskCollection
{
    /// <summary>
    /// The tasks.
    /// </summary>
    private readonly List<Task> tasks = new List<Task>();

    /// <summary>
    /// Gets a value indicating whether this instance is empty.
    /// </summary>
    /// <value>
    ///   <c>true</c> if this instance is empty; otherwise, <c>false</c>.
    /// </value>
    public bool …
Run Code Online (Sandbox Code Playgroud)

.net c# async-await

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

将匹配和非匹配元素过滤为元组的不同部分

有没有一种简单有效的方法在Scala中执行以下操作?

val elements = List(1, 2, 3, 4, 5, 6)
val (odd, even) = elements.filter(_ % 2 == 0)
Run Code Online (Sandbox Code Playgroud)

我知道groupBy,但我想要的东西适用于可以提取为单独值的恒定数量的组.

scala scala-collections

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

Scala 中是否有“部分减少”功能?

是否有组合现有 Scala 集合函数来实现以下目标的标准方法?或者这是否已经在一些流行的扩展库(如 Scalaz)中定义?

def partialReduceLeft[T](elements: List[T], nextReduction: List[T] => (T, List[T])): List[T] =
  if (elements == Nil)
    Nil
  else {
    val (reduction, residual) = nextReduction(elements)

    if (residual.length >= elements.length)
      throw new Exception("Residual collection from nextReduction function must be smaller than its input collection.")

    if (residual == Nil)
      List(reduction)
    else
      reduction :: partialReduceLeft(residual, nextReduction)
  }
Run Code Online (Sandbox Code Playgroud)

该函数接受一个集合并应用一个用户定义的函数,该函数返回第一个减少,这可能消耗一个或多个元素。该方法一直持续到所有元素都被消耗掉。

结果集合的大小可能等于或小于输入集合(我相当不科学地将其称为“部分减少左”-因为想知道此类标准函数的确切术语:))。

我的实现不是尾递归的,老实说,我更愿意使用别人的代码!!

functional-programming scala scalaz

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