小编sdg*_*sdh的帖子

使用两种不同类型的Guava ListenableFutures的结果

我有两个在其他线程上完成的ListenableFutures.每个未来都是不同的类型,我希望在它们完整时使用它们的两个结果.

有没有一种优雅的方式来处理这个使用番石榴?

java future guava

11
推荐指数
2
解决办法
5407
查看次数

统一指针,值和智能指针的C++模板

我的真实例子非常大,所以我将使用简化的例子.假设我有一个矩形的数据类型:

struct Rectangle {
  int width;
  int height;

  int computeArea() {
    return width * height;
  }
}
Run Code Online (Sandbox Code Playgroud)

另一种消耗该类型的类型,例如:

struct TwoRectangles {
  Rectangle a;
  Rectangle b;
  int computeArea() {
    // Ignore case where they overlap for the sake of argument!
    return a.computeArea() + b.computeArea();
  }
};
Run Code Online (Sandbox Code Playgroud)

现在,我不想对用户的所有权限制TwoRectangles,所以我想把它作为一个模板:

template<typename T>
struct TwoRectangles {
  T a;
  T b;
  int computeArea() {
    // Ignore case where they overlap for the sake of argument! 
    return a.computeArea() + b.computeArea();
  }
};
Run Code Online (Sandbox Code Playgroud)

用途:

TwoRectangles<Rectangle> x; …
Run Code Online (Sandbox Code Playgroud)

c++ templates pointers

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

将功能*提升为异步功能*?

假设我有一个函数接受生成器并返回第一个n元素的另一个生成器:

const take = function * (n, xs) {
  console.assert(n >= 0);
  let i = 0;
  for (const x of xs) {
    if (i == n) {
      break;
    }
    yield x;
    i++;
  }
};
Run Code Online (Sandbox Code Playgroud)

用法如下:

const evens = function * () {
  let i = 0;
  while (true) {
    yield i;
    i += 2;
  }
};

for (const x of take(10, evens())) {
  console.log(x);
}
Run Code Online (Sandbox Code Playgroud)

现在想象一下,evens也是async(见这个答案的设置):

const evensAsync = async function * …
Run Code Online (Sandbox Code Playgroud)

javascript generator async-await babeljs ecmascript-next

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

是否可以在没有变量的情况下创建for-of循环?

假设我有这样的函数:

const hasAny = xs => {
  for (const x of xs) {
    return true;
  }

  return false;
};
Run Code Online (Sandbox Code Playgroud)

会抱怨x没有使用,事实上并非如此.

我可以编写一个不声明任何变量的for-of循环吗?

javascript for-loop

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

F#异步中的结果与提升?

似乎有两种方法可以在async工作流中返回错误:raise和Result.

let willFailRaise = async {
  return raise <| new Exception("oh no!")
}

let willFailResult = async {
  return Result.Error "oh no!"
}
Run Code Online (Sandbox Code Playgroud)

对于调用者来说,处理方式有点不同:

async {
  try 
    let! x = willFailRaise
    // ...
  with error -> 
    System.Console.WriteLine(error)
}

async {
  let! maybeX = willFailResult
  match maybeX with
  | Result.Ok x -> 
    // ...
  | Result.Error error -> 
    System.Console.WriteLine(error)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  • 每种方法的优点/缺点是什么?
  • 哪种方法更加惯用F#?

f# async-await

11
推荐指数
3
解决办法
370
查看次数

如何使用Clang从C++字符串生成AST?

我正在尝试使用Clang来操作C++源代码,但是我在发现API时遇到了问题.

我想取一串C++源代码并从中生成一个AST; 就像是:

auto myAst = clang::parse("auto x = 1 + 1;"); 
Run Code Online (Sandbox Code Playgroud)

这有一个最小的工作示例吗?

c++ parsing clang abstract-syntax-tree

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

如何在include中使用预处理器宏?

我正在尝试使用自己的构建系统构建freetype2(我不想使用Jam,我准备花时间去搞清楚它).我在标题中发现了一些奇怪的东西.Freetype定义了这样的宏:

#define FT_CID_H  <freetype/ftcid.h>
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它们:

#include FT_CID_H 
Run Code Online (Sandbox Code Playgroud)

我不认为这是可能的,确实Clang 3.9.1抱怨:

error: expected "FILENAME" or <FILENAME>
#include FT_CID_H
Run Code Online (Sandbox Code Playgroud)
  • 这些宏背后的基本原理是什么?
  • 这是有效的C/C++吗?
  • 我如何说服Clang解析这些标题?

这与如何在#include指令中使用宏有关?但不同,因为这里的问题是关于编译freetype,而不是编写新代码.

c c++ preprocessor freetype2

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

我什么时候应该使用"超级项目"模式?

一些库(例如LLVM)使用"超级项目"模式,其中库的使用者(例如libcxx)应该位于库的文件夹结构内.在LLVM的情况下,这是llvm/projects.

这看起来非常有限,因为当存在其他文件夹结构约束时,它会更难使用库.

为什么要做出这种决定,以及使用这种布局的原因是什么?

c++ cmake

9
推荐指数
0
解决办法
135
查看次数

AWS Lambda的Webpack配置?

我正在使用AWS Lambda,我需要将一些现代JavaScript转换为Node 6.10.

这是我的代码:

export const handler = function(event, context, callback) {
  console.log('Hello, world');
  callback(null, 'OK');
};
Run Code Online (Sandbox Code Playgroud)

这是我想要传达的内容(粗略地说):

exports.handler = function(event, context, callback) {
  console.log('Hello, world');
  callback(null, 'OK');
};
Run Code Online (Sandbox Code Playgroud)

这是我目前正在生成的内容:

module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = {};
/******/
/******/    // The require function
/******/    function __webpack_require__(moduleId) {
/******/
/******/        // Check if module is in cache
/******/        if(installedModules[moduleId]) {
/******/            return installedModules[moduleId].exports;
/******/        }
/******/        // Create a …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-web-services node.js webpack aws-lambda

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

F# 中类型名称前的 # 是什么意思?

#F# 中类型名称之前的a 意味着什么?

例如这里:

let getTestData (inner : int [] -> #seq<int>) (outer : #seq<int> [] -> #seq<'U>) =
    (testData |> Array.map inner) |> outer
Run Code Online (Sandbox Code Playgroud)

f#

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