8.3.3.1 C# 中的组合行为

这一章,我们首先看到的是用C# 代码写的示例,声明只有一个方法的接口表示检查,然后,为了更方便的方法写代码,我们使用了函数(和 Func 委托)。如果我们想要实现处理两个函数的程序,就像现在用 F# 所做的,可能会立即转回接口。在 C# 中,使用接口肯定要比使用元组或类,以函数作为其成员更方便、更合理。我们已经说过,在 C# 中,有两种选择:对于简单的行为,使用函数,对于更复杂的,使用接口。

在 F# 中,在表示形式之间进行转换更简单;最重要的是,由于有类型推断,不必改变源代码中每一处的类型;此外,把 lambda 函数转换成类,要比添加其他函数的变化更大。在第九章,我们将看到,在 F# 中,组合行为也可以使用.NET 接口表示。即使在使用接口时,仍有方便的方法将 lambda 函数转换成任何可以看作是“lambda 对象”的对象,这个功能称为对象表达式(object expression),我们将在下一章讨论。

在这一章,我们主要关注以行为中心的应用程序,但在本章的开头我们解释过,以数据为中心和以行为为中心的方法经常一起使用。现在,我们将实际看到,组合有差别联合类型的函数,对于表示在第七章讨论过的数据,是何等重要。

时间: 2024-10-10 09:48:54

8.3.3.1 C# 中的组合行为的相关文章

Excel表格中Ctrl组合快捷键的新用法,你知道多少?

在日常生活和工作中,学会使用一些快捷键是很有必要的一个事情.那么大家知不知道同样的快捷键在不同的情况下是有不同的功能的.接下来给大家看一些表格中Ctrl组合快捷键的新用法.No.1:[Ctrl+A]跳出函数参数帮助窗口我们都知道Ctrl+A是全选的功能,其实当我们在任意单元格中输入函数,然后点击[Ctrl+A],接着就可以跳出函数参数帮助的窗口了.No.2[Ctrl+E]字串符重组当我们在表格中输入一些数据之后,如在重组下输入一个"张组长",点击该处下方的单元格,使用[Ctrl+E]快

php中的组合模式

刚看完了<深入php面向对象.模式与实践>一书中组合模式这块内容,为了加深理解和记忆,所以着手写了这篇博客. 为方便后续理解,此处先引入两个概念,局部对象和组合对象. 局部对象:无法将其他对象组合到自身内部属性上的对象.即不能组合其他对象的对象. 组合对象:可以将其他对象组合到自身内部属性上的对象.即可以组合其他对象的对象. 注:将对象A的某个属性中存储着对象B对象的引用,则表示A与B有组合关系,其中A将B组合到了自身内部. 首先我们通过给出下面的业务需求,来引入组合模式: 业务部门想要开发一

多张表中数据组合后插入新表的方法

以mysql为例. 遇到这个问题的时候最先想到的方法就是先从各个表中查询出相应的数据后使用程序循环遍历组装后在插入到数据库中.这是最直观的解决办法,但是这个方法处理超大结果集的时候就出现问题,例如:超出内存限制,运行时间过长等等... 这时使用另外一种方法应该会有帮助,那就是使用mysql的on duplicate key update方法来分步骤组合数据. 现在有3张表a,b,c.每个表的结构如下: a表包含字段:id,a,b,c: b表包含字段:aID,d,e,f:字段aID对应表a中的id

JAVA求集合中的组合

好几个月没弄代码了,今天弄个求组合的DEMO 思路是将集合的每个值对照一个索引,索引大小是集合的大小+2.索引默认为[000...000],当组合后选取的组合值demo为[0100..00].然后根据遍历索引来到集合中取值. 上代码: import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ComBit { public static void main(String[]

组合数学中排列组合一点理解

在数学中,什么是排列组合呢?其实在生活中我相信使用是非常广泛的,下面做一个简单阐述 集合中不同元素的排列,是对这些元素一种安排.我们也对集合中某些元素的有序安排感兴趣.对一个集合中r个元素的有序安排称为r排列 简单来说,就是存在n个元素,你需要从中选择r个组合起来,这时有一个问题,就是这些元素怎么表示出来? 可以这么理解,如果能够写在纸上,就是说12,21,这样罗列出来的,并且他们是两种不同情况,那么就是排列,即有顺序的,但如果是不能写在纸上(这里只是比喻,并非不能真的写),或者说你每次组合的元

sql server中使用组合索引需要注意的地方

一.使用组合索引需要注意的地方 1.索引应该建在选择性高的字段上(键值唯一的记录数/总记录条数),选择性越高索引的效果越好.价值越大,唯一索引的选择性最高: 2.组合索引中字段的顺序,选择性越高的字段排在最前面:如果把低选择性的列放在最左端,可能会造成无法使用该索引的情况. 3.where条件中包含两个选择性高的字段时,可以考虑分别创建索引,引擎会同时使用两个索引(在OR条件下,应该说必须分开建索引): 4.不要重复创建彼此有包含关系的索引,如index1(a,b,c) .index2(a,b)

Android中自定义组合控件

Android中自定义控件的情况非常多,一般自定义控件可以分为两种:继承控件及组合控件.前者是通过继承View或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简化和代码的重用. 本篇文章主要介绍自定义组合控件,继承控件后续有机会再述. 自定义组合控件一般来说都是以ViewGroup及其子类(LinearLayout.RelativeLayout.FrameLayout等)为主,内部嵌套其他控件,来组合成一个新的控件,实现一些特定的需要,可以是代码简化,结构

找出数组中所有组合中最大的值

面试中,经常有算法题: 比如找出一个数组中的所有组合,并找出最大的值. 代码如下: 1 package com.company.algorithm; 2 3 /** 4 * 选择数组中和的值最大的一组,例如:[2,-7,5,-9],组大的一组是:2,-7,5值为0 5 */ 6 public class SelectValueMaxGroup { 7 public static void main(String[] args) { 8 int[] list = {6, -1, 2, -9, 4,

rose中设置组合

1.在工具栏选择 "association" (关联).2.编辑role B 属性 open specital , role B detail ,multiplic(重数) 为1,勾选 "Aggregate",不勾选"navigable".containment of Data (传递方式)为by value. 3.编辑role A 属性 role A detail ,勾选"navigable" ,不勾选 "Aggr