在以下情形时使用 Bind : 你需要绑定一个调用到一个普通函数,使用部分或全部参数 你需要绑定一个调用到一个成员函数,使用部分或全部参数 你需要嵌套组合函数对象 泛化绑定器的存在对于编写简洁、连贯的代码非常有用。它减少了为了适配函数/函数对象以及函数组合而创建的小函数对象的数量。虽然标准库已经提供了 Boost.Bind 的一小部分功能,但是 Boost.Bind 所具有的重大改进使得它在多数情
Tuple 库为C++带来了 tuples 的概念。它是符合直觉和简单明了的,虽然它的主要用途看起来就是用于从函数返回多个返回值,但它也可以用于创建各种逻辑组合,就象在标准库容器中保存一组元素一样。这种方法和为各个不同的返回类型创建一个 struct 是相同的,但后者不仅沉闷,而且不可能作出递归的泛型解决方案。使用 Boost.Tuple 就可以解决这些问题。 在本章中,我们看到了如何使用 Tup
类别联合(discriminated unions)在日常编程中非常有用,这个事实无须惊讶,Boost.Variant 库提供了高效且易用的 variant 类型,它正是基于类别联合的。因为C++的联合对于很多类型很难使用(它只支持内建类型和 POD 类型),长期以来一直需要别的东西来取代它。许多创建类别联合的尝试都存在某些重要的缺点。例如,早期的尝试通常仅支持固定的一组类型,的确妨碍了维护性 和
这个类型可以包含不同类型的值,而且与无类类型(如 void*)有很大不同。我们总是严重地依赖C++中的类型安全,只有在极少数情形下我们会愿意没有它来干活。 这是有很好的原因的:类型安全防止我们犯错,并改善了我们代码的性能。因此,我们应该避免无类类型。还有,发现自己需要异类存储的情形很少见,或者为了将使用者隔离于类型的细节,或者为了在更低的层次获得极度的灵活性。any 提供了这些功能,同时维护了类型
无可争议,正则表达式是非常有用和重要的,而本库给C++带来了强大的正则表达式功能。传统上,用户 除了使用POSIX C API来实现正则表达式功能以外,别无选择。对于文本处理的验证工作,正则表达式比手工编写分析代码要灵活和可靠得多。对于查找和替换,使用正则表达式可 以优美地解决很多相关问题,而不用它们则根本无法解决。 Boost.Regex是一个强大的库,因此不可能在这一章中完全覆盖它所有的内容。
为用户自定义类型提供一组正确的关系操作符和算术操作符是非常重要的,而且正确地实现它也是一个重大 的挑战。通过使用Operators库,这个任务大大地简化了,正确性和对称性也随之而来。除此之外,这个库还提供了一组完整的操作符定义,这些类所支持 的概念被适当地命名和定义,可以在定义你的类时明确这些概念(也是通过Operators库!)。在本章中,我们已经看了几个例子,关于如何使用这个库来 改进带有操作
本章介绍了几种工具类,它们可以大大简化我们的日常工作。BOOST_STATIC_ASSERT 提供编译期断言,它有助于我们测试前提条件或强制某些要求。对于泛型编程,checked_delete 在检查错误用法时非常有用,它可以节省我们大量的阅读可怕的错误信息和研究代码的时间。我们还讨论了 addressof, 它是一个获得对象真实地址的小工具,不用管 operator& 有否被重载。我们还看到了
在这一章里,你学习了 Boost.Conversion 库,从 polymorphic_cast开始。polymorphic_cast 的基本原理是代码的清晰性和安全性,它使我们在代码中更灵活地表达我们的意图,还有安全性,与它的竞争者 dynamic_cast<T*>相比它更为安全,因为对结果指针的测试很容易忘记。 接着,你看到了安全的优化,使用 polymorphic_downcas
本章介绍了Boost的智能指针,它们是对C++社区的贡献,无论怎样评价都不过份。对于一个成功的 智能指针库,它必须考虑到并正确地处理大量的细节因素。我可以肯定你曾经见过很多种智能指针,你也可能曾经参与过编写它们,因此你应该知道做好这件事所要 花费的努力。没有其它的智能指针可以和它们一样智能,因此Boost.Smart_ptr库具有很高的价值。 作为软件工程中的重要组成部分,Boost的智能指针明显
本章覆盖了如何编写一个简单独立的 Hibernate 命令行应用程序及小型的 Hibernate web 应用程序的基本要素。更多的教程可以在 website 上找到。
本文档面向希望在Blockly中创建新块的开发人员。假设有一个人可以编辑的Blockly的本地副本,一个人通常熟悉Blockly的用法,一个人对JavaScript有基本的了解。 Blockly附带了大量预定义的块。从数学函数到循环结构的一切。但是,为了与外部应用程序连接,必须创建自定义块以形成API。例如,在创建绘图程序时,可能需要创建“ 半径为R的绘制圆 ”块。 在大多数情况下,最简单的方法是
虽然Blockly提供了许多有用的字段,但是您的应用程序可能具有特殊的情况。 自定义字段时,请按以下步骤操作: 阅读与您所需内容类似的任何字段的文档; 它们可以为自定义提供有用的界面。 例如,下拉菜单具有很多隐藏功能。 考虑使用验证器解决您的问题。 验证器仅允许您接受某些值,修改输入或在字段的值更改时触发功能。 考虑扩展一个字段。 如果存在一个表示您需要的值类型的字段,但是您想要修改其编辑器,其外
Blockly附带了许多预定义字段,您可以在定义块时使用它们: Angle picker (角度选择器) Checkbox (复选框) Colour picker (取色器) Date picker (日期选择器) Dropdown (下拉菜单) Image (图片) Label (标签) Serializable label (可序列化标签) Number (数字) Text input (文本
字段用于定义块上的UI元素。 其中包括字符串标签,图像,文字数据(例如字符串和数字)的输入,以及丰富的编辑器(例如日期选择器和角度选择器)。 默认情况下,Blockly提供了几个字段来处理各种用户输入。 可以通过特定于字段的配置或使用验证程序来自定义这些内容,验证程序可以告诉字段如何在标准编辑器中处理特定内容。 如果您需要完全自定义的字段,则需要花费更多的工作,并且您将需要阅读大多数字段文档。 首
Blockly是为网络和移动应用程序添加可视代码编辑器的应用。 Blockly编辑器使用互锁的图形块来表示代码概念,如变量,逻辑表达式,循环等。它使得用户可以不必关注语法细节就能直接按照编程原则进行编程。 创建一个Blokcly应用 从用户的角度来看,Blockly是一种直观,可使的构建代码的方式。 从开发人员的角度来看,Blockly是一个现成的用户界面,用于创建可视语言,从而为用户生成正确的代