函数

计算器 abacus 技术文档之三----自定义函数

馋奶兔 提交于 2020-02-29 03:30:24
计算器 abacus 是一个小巧却功能齐备的计算器,支持四则混合运算(包括逻辑运算),支持大量的数学函数,支持变量参与运算,支持自定义函数以扩充功能。目前版本是 2,地址: http://www.oschina.net/code/snippet_736932_13725 。本文就自定义函数作一介绍。 用户可以将含有参数的表达式定义为一个新函数,以实现含参表达式的复用,对于一元二次方程求根,可以定义函数 SolveEqution1x2p(a, b, c) = (- b + sqrt(b ^ 2 - 4 * a * c)) / (2 * a) 那么没有参数的表达式就不能定义成函数吗?照样可以,只要你喜欢,假使你不喜欢使用符号常量,你仍然可以通过定义函数来使用圆周率:Pi() = 3.141593,然后在需要圆周率的地方调用它就行了。进一步,可以在已定义函数的基础上定义新的函数,比如你定义了圆的面积函数(下式中pi 是符号常量,圆周率): AreaCircle(r) = pi * r * r 就可以继续定义圆环的面积 AreaRing(r1, r2) = AreaCircle (r1)- AreaCircle (r2) 如何,很刺激吧?我们来看一个更有趣的例子,先介绍一下程序内置的 if 条件函数 if(x, a, b) 这个函数有三个参数,当第一个参数 x 不为零时函数返回第二个参数

PHP学习笔记5:代码重用和函数

萝らか妹 提交于 2019-12-10 07:23:01
读《PHP和MySQL Web开发》笔记合集: http://my.oschina.net/bluefly/blog/478580 1、 代码重用的好处 成本、可靠性、一致性 注意:只要原来的代码是模块化的而且编写良好,那么重复使用代码还会节省很多工作。在工作时,可以试着辨认一下今后可能再次要调用的代码段。 2、 require() 与被包含代码执行 问题 如果希望一个被包含文件中的PHP代码能够被当成PH代码进行处理,必须将PHP代码放到PHP标记之间(不管被包含代码的文件是什么后缀,jpg、rar后缀都无所谓,只要里边的php代码是放在php标签里的,被包含后都能执行) 但是文件后缀,会影响浏览器访问该文件时是否直接载入,并以普通文本的形式查看源代码。 所以, 为了安全,请将被包含文件保存在文档树之外,或者使用标准的文件扩展名 例子: 3、如果 被包含文件不存在的话, require会给一个致命错误,而include 只会给一个警告 。 还有两个变体, require_once() ,include_once() 确保一个被包含的文件,只能被引入一次。 注意 :当引入函数库时,这两个函数才非常有用,使用这两个函数可以防止错误的引入同样的函数库两次,从而出现重复定义的错误。如果关心编码实践,可以考虑使用require() 和include() ,因为它们的运行速度较快。

【汇编】C++ 函数调用之——有参无返回调用(传值)

こ雲淡風輕ζ 提交于 2019-12-10 04:01:09
C++函数有参调用有几种传参方式: 一.传值 二.传指针(地址) 三.传引用 其中参数可被const修饰,也可以有默认值。下面分情况讨论: 为了简洁,省略main函数的汇编码而直接给出func函数的汇编码。 一.传值调用 有源代码: void func(int a,char b){ int c; c=a+b; } int main(int argc,char *argv[]) { //call func func(10,'a'); return 0; } 下面看看汇编码: 调用发生时: //call func func(10,'a'); //进行参数压栈操作,首先是'a'压入栈,然后是10压栈,然后call跳转表,再由调转表call函数 00F1141E push 61h 00F11420 push 0Ah 00F11422 call 00F1113B //函数调用完成后,栈减小8字节,两个dword,因为CPU对栈的操作都是双字操作,这里两个参数就是两个双字 00F11427 add esp,8 具体内存中的表现是这样的(先让func把栈初始化): 显然不在func的stack内,注意两个参数前面还有两个DWORD, 一个是00f1 1427,另一个是00dd f794;这两个DWORD的产生应该是在PUSH两个参数之后, 又有的两个PUSH, 显然,第一个PUSH 00f1

Scala基础

一个人想着一个人 提交于 2019-12-09 20:45:22
1. 函数和方法 在Scala中函数是一等公民,你可以像操作数字一样将函数赋值给一个变量。使用val语句可以定义函数,def语句定义方法: class Test{ def m(x: Int) = x + 3 val f = (x: Int) => x + 3 } 在Scala中无法直接操作方法,如果要操作方法,必须先将其转换成函数。有两种方法可以将方法转换成函数: val f1 = m _ 在方法名称m后面紧跟一个空格和下划线告诉编译器将方法m转换成函数,而不是要调用这个方法。 也可以显示地告诉编译器需要将方法转换成函数: val f1: (Int) => Int = m 通常情况下编译器会自动将方法转换成函数,例如在一个应该传入函数参数的地方传入了一个方法,编译器会自动将传入的方法转换成函数。 2. 两者的区别 可以直接调用函数上的方法,而方法却不行,例如: f.toString //编译通过 m.toString //编译失败 3. Currying函数和Currying方法 Currying函数可以只传入部分参数返回一个偏函数(partially applied function, 也叫部分应用函数),而Currying方法在转换成偏函数时需要加上显式说明,让编译器完成转换: object TestCurrying { def invoke(f: Int => Int =>

PostgreSQL函数如何返回数据集

烈酒焚心 提交于 2019-12-09 18:42:40
以下主要介绍PostgreSQL函数/存储过程返回数据集,或者也叫结果集的示例。 背景: PostgreSQL里面没有存储过程,只有函数,其他数据库里的这两个对象在PG里都叫函数。 函数由函数头,体和语言所组成,函数头主要是函数的定义,变量的定义等,函数体主要是函数的实现,函数的语言是指该函数实现的方式,目前内置的有c,plpgsql,sql和internal,可以通过pg_language来查看当前DB支持的语言,也可以通过扩展来支持python等 函数返回值一般是类型,比如return int,varchar,返回结果集时就需要setof来表示。 一、数据准备 create table department(id int primary key, name text); create table employee(id int primary key, name text, salary int, departmentid int references department); insert into department values (1, 'Management'),(2, 'IT'),(3, 'BOSS'); insert into employee values (1, 'kenyon', 30000, 1); insert into employee values

你可能不知道的一些PHP函数的特性

人走茶凉 提交于 2019-12-09 15:28:22
这篇文章介绍的这些函数你可能都知道,也都用过,但是有一些细小的点你可能没有注意,而且开发中也会用到这些点,当你用到的时候,能想到这些PHP函数的特性,那么你不仅开发效率高,而且代码质量也高。下面我将介绍一些这样的函数: array_diff: 仅比较value的值,并且键值保持不变。 array_diff_assoc: 不仅比较value的值,而且比较key值,并且结果键值重新排序 array_diff_key($array1, $array2,$array3...): 包括所有出现在array1但是未出现在任何其他参数数组中的键名的值,在最后一个参数你还可以自定义一个函数 strip_tags($str,'<img><p>'): 剥去html标签,但是保留img和p标签 in_array(): 函数在第三个参数加个true,避免数据格式转换,以提高性能。 str_replace(array('1','2'),array('a','b'),$str): str_replace 和 preg_match都可以以数组的方式传值 array_slice(array,offset,length, preserve): 第四个参数如果为true则保留键名,否则索引从新排序 array_search(value,array): php返回键,php给出一个值,返回数组中对应改值的键,只返回一个

php数组array_filter()函数和array_slice()函数

北慕城南 提交于 2019-12-07 12:20:38
<?php /* array_filter()用回调函数过滤数组中的单元 array_filter(array,function) 参数描述:如果自定义过滤函数返回 true,则被操作的数组的当前值就会被包含在返回的结果数组中, 并将结果组成一个新的数组,如果原数组是一个关联数组,键名保持不变。 */ function delEmpty( $val ) { if ( $val === "" || $val === "php" ) { //当数组中存在空值和php值时,换回false,也就是去掉该数组中的空值和php值 return false; } return true; } $input_array = array ( 'A' => "Java" , 'B' =>false, 'B1' =>true, 'C' => "" , 'D' => " " , 'E' =>null, 'G' =>0, 'G1' => '0' , 'H' => 'php' ); print_r( array_filter ( $input_array )); print_r( array_filter ( $input_array , "delEmpty" )); ?> 没有回调函数的运行结果: 可以看出,false,null,和真正的''空白以及0都被过滤了,而且数组的下标没有改变.

【C++】srand及rand函数

本秂侑毒 提交于 2019-12-07 03:40:49
PS:是在数据挖掘实验中遇到的 摘自:【 http://blog.csdn.net/candyliuxj/article/details/4396666 】 --candyliuxj rand 函数名: rand 功 能: 随机数发生器 用 法: int rand(void); 所在头文件: stdlib.h 函数说明 : rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定 的范围里可看成是随机的。 rand()返回一随机数值的范围在0至RAND_MAX 间。RAND_MAX的范围最少是在32767之间(int)。用 unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中 的机率是相同的。 用户未设定随机数种子时,系统默认的随机数种子为1。 rand()产生的是伪随机数字,每次执行时是相同的;若要不同,用函数srand()初始化它。 程序例包含的内容: #include <stdlib.h> #include <time.h> #define MIN 1 //随机数产生的范围 #define MAX 10 srand((unsigned)time(0)) MIN + ( int )MAX * rand() / (RAND_MAX + 1) srand 函数名: srand 功 能:

Linux Shell 之 Shell中的函数调用

梦想的初衷 提交于 2019-12-06 23:31:55
说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法。 一、Shell中函数的定义 为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西。而Shell中函数的定义有两种方法,如下: function fname() { statements; } 或 fname() { statements; } 注意,()内是没有参数的,它并不像C语言那样,在()里可以有参数。 那大家可能就郁闷了,函数调用或多或少总是会需要一些参数,那么这些参数要怎么传递进来呢?其实参数传递方式为:fname;(不需要传递参数)或fname agr1 arg2(需要传递两个参数); 二、自定义函数的例子 不知道大家的情况如何,反正一开始我就觉得很别扭,因为在C语言中,例如我定义一个函数int cmp(int a, int b),那么我就会在函数中使用到函数头中声明的变量a和b,而在Shell中却没有定义参数,那我的函数又需要用到这两个参数,怎么办好呢?下面就用一个例子来说明好了。 #! /bin/bash # Filename:LoopPrint.sh function LoopPrint() { count=0;

如何使用 Laravel Facades ?

我只是一个虾纸丫 提交于 2019-12-06 23:09:36
Facade 布局是在面向对象编程中经常使用的一种软件设计布局方式。Facade 实际上是一种包括复杂函数库的类,提供了更加简洁易读的接口。Facade 布局还能为一组结构复杂、设计简陋的 API 提供统一、设计周到的 API。 Laravel 框架与该布局的特点相似,也称为 Facades。在本教程中,我们会学习如何在其他框架应用 Laravel 的 “Facades”。在继续学习之前,让我们简单了解一下 Ioc 容器 。 首先,我们了解 Laravel 的 facades 内部工作结构。之后再讨论如何将之改造并用于其他环境。 Laravel 中的 Facades Laravel facade 是一种为容器内部服务提供类似静态接口的类。据其文档描述,Facades 是可触及容器服务底层实现方式的代理。 不过,在 PHP 社区,有关其名称的争论一直不断。一些人坚持修改此名称以避免开发者的困惑,因为其并未完全实现 Facade 布局。如果你也受此名称困扰,大可以为其取个别名。但是,请注意,下文将会用到的 Laravel 框架基类(base class)将会称为 Facade。 How Facades Are implemented in Laravel Facades 在 Laravel 中如何实现 你可能也知道,容器内的每个服务都有个唯一名称。在 laravel 应用中,可使用