关于function和task的说明
1. 关于函数function调用,总结两个要点:
1. 函数调用一般产生一个值,这个值被赋值给某个变量
2. 函数所返回的值只能是一个,不可以是多个,不能像C语言中采用指针的方式返回多个值。因此,如果想产生多个结果则需要采用别的方式,实际上就是任务:
下面给出一段具体的代码(虽然很简单),体会函数的作用:

图1 函数调用图
这个函数的功能是完成了输入的三位二进制数的阶乘和,比如输入6,则完成1!+2!+3!+4!+5!+6!,。而sum_factorial(in)中的in就是要求的最大阶乘值,比如这里的6,sum_factorial则是函数名,通过函数可以发现,最终的结果实际上付给了函数名,即一般使用时,认为函数名就是函数的输出,因此有必要对函数名的数据格式进行声明,使得它能够和被赋值的变量的类型格式一致,比如这里的out。在这里,我们发现,函数的作用,突出产生了一个值,即我们要产生一个值,然后赋给一个变量。这里也体现了函数也是为了完成一个功能,但他强调这个功能的单值结果是什么。并且我们需要这个结果去干别的事情,即被赋值。并且,函数只能返回一个值!!!
2.关于任务的调用总结如下:
2.1 任务的调用强调完成一个功能,并不产生赋值作用
2.2 任务调用可以产生多个结果(类似于C语言中函数中的指针)
下面举例说明任务:

图2 任务调用图
从图中可以看出,任务完成了两个数交换的功能,而且并不赋值;说明了任务核心在于完成功能;在此需要这里这里的一个细节。任务中的x,y变量被定义成了inout双向形式的变量,这是因为,x,y实际上是相当于形参,最终还要将计算的结果返回去,送出去。即任务就像,送进来东西,经过加工,再送回去。
关于function和task的说明的更多相关文章
- (原创)task和function语法的使用讨论(Verilog,CPLD/FPGA)
1. Abstract function和task语句的功能有很多的相似之处,在需要有多个相同的电路生成时,可以考虑使用它们来实现.因为个人使用它们比较少,所以对它们没有进行更深的了解,现在时间比较充 ...
- 在Grunt task中集成Protractor
Protractor是专为AngularJS应用程序编写的UI自动化测试框架.前端构建有很多构建工具,比如Grunt.Gulp等.一般我们会把这些构建工具作为集成集成的脚本执行工具.所以如果把Prot ...
- 【手记】MTK之TASK创建及使用
首先来看看task的数据类型声明,在config\include\hal\task_config.h中对task和module类型进行了定义. /*************************** ...
- C# Task ContinueWith的实现
看了上一篇C# Task 是什么?返回值如何实现? Wait如何实现 我们提到FinishContinuations方法中会调用TaskContinuation实例,那么我们的ContinueWith ...
- grunt入门讲解4:如何创建task(任务)
每当运行Grunt时, 你可以为其指定一个或多个任务, 这些任务用于告诉Grunt你想要它做什么事情. 如果你没有指定一个任务,并且你已经定义一个名为 "default" 的任务, ...
- [Compose] 10. Capture Side Effects in a Task
We examine the data structure Task, see some constructors, familiar methods, and finally how it capt ...
- Multi-tasking RTOS for microprocessors with limited memory by saving only a single return address per task during context switching
A real-time operating system (RTOS) for use with minimal-memory controllers has a kernel for managin ...
- [源码解析] 并行分布式任务队列 Celery 之 Task是什么
[源码解析] 并行分布式任务队列 Celery 之 Task是什么 目录 [源码解析] 并行分布式任务队列 Celery 之 Task是什么 0x00 摘要 0x01 思考出发点 0x02 示例代码 ...
- ECMAScript 6 扫盲
ECMAScript 6 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中 ...
随机推荐
- Navicat 连接MySQL数据库 报错2059 - authentication plugin 'caching_sha2_password'的解决办法
#在数据库的命令行中输入以下代码即可解决,密码必须要修改 可以再次执行将密码改回来. use mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH ...
- 线程--实现Runnable接口
实现Runnable接口,创建线程步骤: 1.定义类,并实现Runnable接口 2.重写Runnable接口中的run()方法 3.通过Thread类建立线程对象 4.将实现了Runnable接口的 ...
- 【SDOI2014】向量集
[SDOI2014]向量集 题目描述 我们分析一波: 假设我们询问\((A,B)\),\(x_i>x_j\)若 \[ A\cdot x_i+B\cdot y_i>A\cdot x_j+B\ ...
- Java 8 新特性:1-函数式接口
(原) Java 8 新特性1-函数式接口 Lambda表达式基本结构: (param1,param2,param3) -> {代码块} Lambda表达式结构: (type1 arg1,typ ...
- Linux之系统优化
查看系统版本 [root@luffy- /]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@luffy- /]# uname -m ...
- bootstrap-table 分页
bootstrap-table <!DOCTYPE html> <head> <meta charset="UTF-8"/> <tit ...
- vue获取当前元素
Html: <li><a href="#" v-on:click="typeStyle">萨克斯萨克<span></s ...
- UVA208-Firetruck(并查集+dfs)
Problem UVA208-Firetruck Accept:1733 Submit:14538 Time Limit: 3000 mSec Problem Description The Ce ...
- Java8时间的简单时间
package com.java8.date; import org.junit.Test; import java.text.SimpleDateFormat; import java.time.* ...
- P1897 电梯里的爱情
简单模拟: 没什么好说的,因为范围比较水,所以直接按题意直接模拟1就好 #include<iostream> using namespace std; #define ll long lo ...