- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
n3290 ISO 草案中的一点:Lambda 表达式:第 5.1.2 节,第 6 段:
"The closure type for a lambda-expression with no
lambda-capture has a public non-virtual non-explicit const
conversion function to pointer to function having the same
parameter and return types as the closure type’s function
call operator. The value returned by this conversion
function shall be the address of a function that, when
invoked, has the same effect as invoking the closure
type’s function call operator."
谁能举个例子解释一下这一点?
最佳答案
简短的回答
这只是意味着可以将不捕获任何内容的 lambda 转换为具有相同签名的函数指针:
auto func = [](int x) { return x * 2; };
int (*func_ptr)(int) = func; // legal.
int y = func_ptr(2); // y is 4.
捕获使其成为非法:
int n = 2;
auto func = [=](int x) { return x * n; };
int (*func_ptr)(int) = func; // illegal, func captures n
长答案
Lambda 是创建仿函数的简写:
auto func = [](int x) { return x * 2; };
相当于:
struct func_type
{
int operator()(int x) const { return x * 2; }
}
func_type func = func_type();
在这种情况下,func_type
是“闭包类型”,而 operator()
是“函数调用运算符”。当您获取 lambda 的地址时,就好像您将 operator()
声明为静态并获取其地址,就像任何其他函数一样:
struct func_type
{
static int f(int x) { return x * 2; }
}
int (*func_ptr)(int) = &func_type::f;
当您捕获变量时,它们将成为 func_type
的成员。 operator()
依赖于这些成员,因此不能将其设为静态:
struct func_type
{
int const m_n;
func_type(int n) : m_n(n) {}
int operator()(int x) const { return x * m_n; }
}
int n = 2;
auto func = func_type(n);
普通函数没有成员变量的概念。按照这个想法,如果 lambda 也没有成员变量,则只能将其视为普通函数。
关于c++ - Lambda 表达式 : n3290 draft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674506/
在 Gmail API 中,drafts.list 经常会返回草稿 ID但是当我将它传递给 drafts.get 时,它会返回 404 错误。这是对于某些草稿 ID 可重复,我可以再次调用 draft
我正在尝试将调用组件中的文本更新到编辑器组件中。我使用 props 来传递来自调用者的文本,但是当文本更改时(在 ContentEditor 中更新了 props),Editor 组件中的文本不是:
我正在使用 MFMailComposeViewController Controller ,如下所示: MFMailComposeViewController *picker1 = [[MFMailC
如果我想处理字符*的输入,我可以使用handleBeforeInput(str): handleBeforeInput(str) { if (str !== '*') { retu
使用下面的代码我得到纯文本但我想要格式化文本点击按钮 {alert(this.state.editorState.getCurrentContent().getPlainText());}} typ
如何添加链接?我知道如何添加链接到 选择 const contentState = editorState.getCurrentContent();
我的draft.js 填充 body带有文本,例如:'{"blocks":[{"key":"3mont","text":"lorem ipsum","type":"unstyled","depth":
我在我的应用程序中使用基于草稿js的react-draft-wysiwyg文本编辑器。我在尝试通过编辑器图像控件上传图像时遇到一些问题。我正在使用自定义 FileUploader 组件。它将图像保存在
我有一个由 Draft.js 提供的编辑器的包装器,我想让 tab/shift-tab 键像它们应该用于 UL 和 OL 一样工作。我定义了以下方法: _onChange(editorState)
我关注了draft-js document创建一个非常简单的 Draft-js 演示。 一切似乎都运行良好,但是当我在 Chrome 中打开网址时,我只能看到一个白色的空白页面(那里有一个隐藏的编辑器
如何测试draftjs的内容编辑器为空? 我现在唯一的想法是与从此函数返回的对象进行对象比较:EditorState.createEmpty().getCurrentContent() 最佳答案 只需
我有一个简单的用例:有一个 DraftEditor 组件,它采用 value作为它的 Prop 并基于value创建一个编辑器状态(空的或有内容的)。 value 可能被父级更改,当它发生时,我希望草
我尝试根据主 draft.js 页面上的示例创建基本草稿 js 编辑器 https://draftjs.org/ . 当我在主页面的编辑器中单击切换了 ol/ul 的选项卡时,我得到了嵌套列表。但是在
我有一个需要多个文本输入的应用程序,为了格式化和自定义,我选择了 draft-js 作为我的编辑器,但是我遇到了一个非常令人困惑的输入问题。 当我在编辑器中输入时,我最近按下的键被打印在编辑器的开头,
问题是:如何将 draft-js 内容保存为 html,然后在页面上呈现内容(此时是 html 字符串)。 我想分享我学到的东西。 请在解决方案中找到一种使用 draft.js 保存和呈现内容的方法。
我正在做一个 React 项目,我们将在其中使用大量表单,包括具有丰富 HTML 的字段。我搜索了一会儿,偶然发现了 draft-js。看起来很好,但是我似乎找不到任何从头到尾如何使用它的好例子。我发
如何确保我的 UI 上唯一的 draft-js 文本框在页面加载时自动聚焦? 有一个记录的方法叫做 focus ,但是我不确定实现所需的语法。 最佳答案 如果您的编辑器是用一些默认值启动的,那么只需执
试图学习如何在我自己的应用程序中使用 DraftJS React 组件,但我遇到了一个大问题。我已经按照位于 here. 的示例进行操作 我使用 create-react-app 获取基础样板文件,我
我在一个项目中将 Draft JS 作为一个简单的编辑器实现了,但是我在设置无序列表的样式时遇到了问题,特别是更改项目符号的颜色以匹配文本颜色。 文档中似乎没有关于如何将样式应用于包装 unorder
我正在尝试将 Draft.js 与图像插件一起使用。这是我的问题。我设法让它工作,但没有加载样式,编辑器占据了整个页面,按钮没有样式。 我从提供的 CSS 加载样式 import './Draft.c
我是一名优秀的程序员,十分优秀!