小编Nat*_*eyn的帖子

当Scala"Future"被垃圾收集时会发生什么?

说我有一个Stream相当昂贵的计算.我可以通过编写类似的东西轻松创建一个"提前计算"的线程

import scala.actors.Futures._
val s = future { stream.size }
Run Code Online (Sandbox Code Playgroud)

如果我然后抛弃对此的引用,该Future线程是否会被垃圾收集器杀掉?

garbage-collection scala future

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

我应该检查构造函数参数的类型(以及其他地方)?

Python不鼓励检查类型.但在许多情况下,这可能有用:

  1. 检查构造函数参数.例如,检查foe布尔值,字符串,字典等.如果我不这样做并将对象的成员设置为参数,则稍后会引起问题.

  2. 检查函数参数.

  3. 在属性中.如果有人设置了错误的值或不同的类型,我应该快速回复.

python typechecking

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

Java Futures的无序返回

我可以使用Java Futures(java.util.concurrent.Future<T>)运行多个类似进程(SIMD)的唯一模型如下:

class Job extends Callable<T> {
  public T call() {
    // ...
  }
}
List<Job> jobs = // ...
List<Future<T>> futures = ExecutorService.invokeAll(jobs);
for (Future<T> future : futures) {
  T t = future.get();
  // Do something with t ...
}
Run Code Online (Sandbox Code Playgroud)

此模型的问题在于,如果作业0需要很长时间才能完成,但作业1,2和3已经完成,则for循环将等待从作业0获取返回值.

是否有任何模型允许我获得每个Future结果,因为它变得可用而不只是呼叫Future.isDone()和忙碌等待(或呼叫Thread.sleep())如果没有准备好了吗?

java concurrency future

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

如果Template Argument无效,请在Compile-Time检查

我正在尝试包装Windows API函数以在我选择时检查错误.正如我在之前的SO问题中发现的那样,我可以使用模板函数来调用API函数,然后调用GetLastError()以检索它可能设置的任何错误.然后,我可以将此错误传递给我的Error班级让我知道.

这是模板函数的代码:

template<typename TRet, typename... TArgs>
TRet Wrap(TRet(WINAPI *api)(TArgs...), TArgs... args)
{
    TRet ret = api(args...);
    //check for errors
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

使用这个我可以有如下代码

int WINAPI someFunc (int param1, BOOL param2); //body not accessible

int main()
{
    int ret = someFunc (5, true); //works normally
    int ret2 = Wrap (someFunc, 5, true); //same as above, but I'll get a message if there's an error
}
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是,有一个可能的问题.采取这个功能

void WINAPI someFunc();
Run Code Online (Sandbox Code Playgroud)

将其转换为模板函数时,它看起来如下:

void Wrap(void(WINAPI *api)())
{
    void ret …
Run Code Online (Sandbox Code Playgroud)

c++ typechecking compile-time variadic-templates c++11

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

php类型检查方法参数 - 值得吗?

我想知道你认为最好的做法是什么 - 它是否非常适合在PHP中输入检查参数?也就是说,你实际上看到你已经实现了参数类型检查的项目与那些没有实现参数类型检查的项目中的错误明显减少了吗?我在考虑这样的事情:

public function __construct($screenName, $createdAt) {  
        if (!is_string($screenName) || !is_string($createdAt) {
            return FALSE;
        }
}
Run Code Online (Sandbox Code Playgroud)

php parameters typechecking

9
推荐指数
2
解决办法
3902
查看次数

为什么要使用toString()来攻击你可以用typeof检查的args?

我明白你为什么需要使用Object.prototype.toString()String()进行类型检查数组,但不是的typeof足够的类型检查功能和字符串?例如,MDN for Array.isArray上的polyfill使用:

Object.prototype.toString.call(arg) == '[object Array]';
Run Code Online (Sandbox Code Playgroud)

在数组的情况下非常清楚,因为你不能typeof用来检查数组.Valentine使用instanceof:

ar instanceof Array
Run Code Online (Sandbox Code Playgroud)

但对于字符串/函数/布尔/数字,为什么不使用typeof

jQueryUnderscore都使用这样的东西来检查函数:

Object.prototype.toString.call(obj) == '[object Function]';
Run Code Online (Sandbox Code Playgroud)

这不等于这样吗?

typeof obj === 'function'
Run Code Online (Sandbox Code Playgroud)

甚至这个?

obj instanceof Function
Run Code Online (Sandbox Code Playgroud)

javascript types typechecking

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

你可以在Spring TaskExecutors中使用Future/Futuretask对象吗?

是否可以将Java FutureTask与Spring TaskExecutor 一起使用来获取Future对象?

我正在寻找一个实现Java ExecutorService接口的TaskExecutor,特别是submit()方法.浏览Spring Javadocs并没有透露任何类似这样的类.是否有一些替代方法通过Spring TaskExecutors处理未来,我不知道?

如果有可能,你还可以包括一个例子吗?

java concurrency spring future futuretask

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

那么C#5.0中的可选泛型类型参数呢?

只是一个想法.

在C#中使用可选类型参数不是很有用吗?

这会让生活更简单.我厌倦了多个具有相同名称但类型参数不同的类.另外VS不支持这个非常vell(文件名):-)

例如,这将消除对非通用IEnumerable的需求:

interface IEnumerable<out T=object>{
  IEnumerator<T> GetEnumerator()
}
Run Code Online (Sandbox Code Playgroud)

你怎么看?

c# generics

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

如何检查对象以查看其类型并返回一个已铸造的对象

我有传递对象的方法.在这个方法中,我检查它的类型,并根据类型我用它做什么,并返回一个长.我已经尝试过每一种我能想到的方式来做这件事我总是会遇到几个编译器错误,告诉我它需要一个特定的对象,但却得到另一个.有人可以向我解释我做错了什么并引导我朝着正确的方向前进吗?我到目前为止所尝试的内容如下:

  override def getInteger(obj:Object) = {
    if (obj.isInstanceOf[Object]) null
    else if (obj.isInstanceOf[Number]) 
      (obj:Number).longValue()
    else if (obj.isInstanceOf[Boolean]) 
      if (obj:Boolean) 1 else 0
    else if (obj.isInstanceOf[String]) 
      if ((obj:String).length == 0 | (obj:String) == "null") 
        null
      else
          try {
            Long.parse(obj:String)
          } catch {
            case e: Exception => throw new ValueConverterException("value \"" + obj.toString() + "\" of type " + obj.getClass().getName() + " is not convertible to Long")        
          }
  }
Run Code Online (Sandbox Code Playgroud)

casting scala typechecking

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

等待Scala Future阻塞线程吗?

当我等待 Scala Future的结果时,它是否更像接收,或者像反应,即是否阻塞线程,或者如果可用,则在结果后安排继续?

scala future promise actor

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