介绍4种语音的函数定义和特殊的注意事项。横向对比,便于理解。
php7的函数定义
php7新增了更加严格的函数声明的类型定义,php也在不断的发展过程中,越来越和java等语言看起来比较接近
1.首先看下严格模式的写法
function 方法名(参数类型 参数数据) :返回值类型{
方法语句;
return 返回值;
}
2.举例更直观
//函数定义
function arraySum(array $arr) :int{
//此处不加强制类型转换也可,语音自身会做隐式转换
return (int)($arr[0] + $arr[1])
}
//调用并打印
var_dump(arraySum([10,20]));
//结果
int(30)
3.因为php为弱类型语音,也可以把上述事例,改为下方的简单的模式
//函数定义
function arraySum($arr) {
return $arr[0] + $arr[1];
}
//调用并打印
var_dump(arraySum([10,20]));
//结果
int(30)
4.个人感受,写了近5年的php代码,php语法简单,类型控制少,减少再此上的思考时间。但是,如果做经常中大型项目,建议采用严格模式,能够在代码层面看清楚每个函数的类型和状态。也会减少很多奇怪的异常。
go的函数定义
1.首先看看语法
func 方法名(类型 参数) 返回类型{
//方法语句
return 返回值
}
2.举例更直观
package main
import "fmt"
//入口函数
func main() {
fmt.Print(arraySum(10,20))
}
//函数定义
func arraySum(x ,y int) int{
return x + y
}
//执行结果
30
tip:go的语句结尾可以不写分号,这点和python很相似
3.go和php的有点很大的不同是,go支持函数多返回值(和python类似),举例更直观
package main
import "fmt"
//入口函数
func main() {
fmt.Print(arraySum(10,20))
}
//函数定义
func arraySum(x ,y int) int{
return x + y, x * y;
}
//执行结果
30 200
4.go相对应php,python为静态语言,但是在语法上,相对于C和JAVA,也是尽量做到简单易用。
python
1.首先看语法
def 函数名(参数):
语句
return 返回值
2.举例更直观
//函数定义
def my_sum(x,y):
return x+y
//打印输出
print(my_sum(10,20))
//执行结果
30
tip:python的语法,相对于其他语言,也是做到了极减,省去了很多的重复的大括号,依靠格式来进行语句的聚合
3.python也是支持函数多返回值的,在写php代码的时候,因为不支持多返会值,一般会用数组等类型进行包装,相对于此种方式,少了一些便利
//函数定义
def my_sum(x,y):
return x+y,x*y
//打印输出
print(my_sum(10,20))
//执行结果
(30, 200)
4.python是很典型的弱类型语言,语法简单灵活。而php同学,则是越来越像JAVA,当然在性能上,相对于以前的php5,也有一定的提升
java
1.首先看语法
修饰符 返回类型 方法名(类型 参数){
语句;
return 返回值;
}
2.举例更直观
public class demo {
//入口
public static void main(String[] args) {
my test = new my();
System.out.println(test.my_sum(10,20));
}
}
class my{
//函数定义
public int my_sum(int x, int y){
return x + y;
}
}
//执行结果
30
tip:java相对于前几种,特殊点在于是,java是完全面向对象,要有类的概念作为大前体,所以函数也可以称为成员方法。所以需要最前面的访问修饰符。上例写了2个类,如果一个类做打印,方法定义为静态方法即可。
3.java作为传统的静态语音,其语法和特点,都算是比较传统的
网友评论