php7 支持函数返回值声明。就像下面这样:

function sum($a, $b): float {

return $a + $b;

}

// Note that a float will be returned.

var_dump(sum(1, 2));

?>

结果是:

float(3)

在 default weak 模式下,会自动转换返回的类型。在 strong 模式下,如果类型不正确,会抛出类型错误异常。

如果是重写父函数,那么该函数的返回值类型声明也要跟父函数一样。如果父函数没有声明返回值类型,那么子函数是可以声明的。

php7.1.0 开始,可以在冒号以前加上问号(?:) 来表示可以返回 NULL 或特定的类型

比如像这样

function sum($a, $b): ?float {

return $a + $b;

}

// Note that a float will be returned.

var_dump(sum(1, 2));

?>

这表示可以返回 NULL 或者 float

问号不仅可以放在返回值之前,还可以放在函数参数前,表示可以为 NULL

比如这样:

ini_set('display_errors', 1);

function test(?string $name)

{

var_dump($name);

}

test('elePHPant');

test(null);

test();

?>

结果是:

string(9) "elePHPant"

null

Uncaught Error: Too few arguments to function test(), 0 passed in...

这并不影响默认值的用法

ini_set('display_errors', 1);

function test(?string $name = 'dudu')

{

var_dump($name);

}

test('elePHPant');

test(null);

test();

?>

结果是:

string(9) "elePHPant"

null

string(4) "dudu"

参考文档

php 函数声明2,php 函数返回值声明相关推荐

  1. 【函数的定义、调用(嵌套调用、递归调用)、声明、函数的分类(有无返回值、有无参数)、变量(自动变量与静态变量、局部变量与全局变量、只读变量)】(学习笔记7--函数)

    第一篇博文,打卡新星计划第三季3.4~4.4,希望能有质的飞跃,顶峰相见 一.自定义函数 1.函数的定义 函数在使用前也需要定义,定义的格式如下: 数据类型 函数名([数据类型 参数1],[数据类型 ...

  2. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  3. python函数定义参数类型和返回值类型

    python中我们也可以定义函数的参数类型和返回值类型,如下代码 #函数参数和返回值的类型声明,python函数类型的声明,更加有意义,更加实用一些 def add(a,b):''':param a: ...

  4. API函数MessageBox的参数与返回值

    Win32汇编函数的参数,参数类型,返回值都是一个dword类型(4字节) 返回值永远放在EAX中,如超过4个字节则返回一个数据的指针(指向返回值存放的缓冲区地址) .data titleS db ' ...

  5. 如何引用传递参数从一个函数中得到多个返回值

    2019独角兽企业重金招聘Python工程师标准>>> 通过"引用"传递参数的方法从一个函数中得到多个返回值.就像三元运算符一样,大部分受过正式编程训练的程序员都 ...

  6. 实现 fizzBuzz 函数,参数 Thum 与返回值的关系如下: 1、如果 Thum 能同时被 3 和 5 整除,返回字符串 fizzbuzz 2、如果 Thum 能被 3 整除,返回字符串 fiz

    题目描述 实现 fizzBuzz 函数,参数 Thum 与返回值的关系如下: 1.如果 Thum 能同时被 3 和 5 整除,返回字符串 fizzbuzz 2.如果 Thum 能被 3 整除,返回字符 ...

  7. 函数中有多个return?C语言中,一个函数可以有几个返回值?

    在移植wifi的代码时,遇到了一些与下面类似的函数,这些函数中有不只一个return,这可是个新鲜的玩意儿: int func (int b) {int a=5;if (a>b)return a ...

  8. 以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值。

    以下是一个使用 VBA 的例子,演示了 ByVal 和 ByRef 的区别,以及如何在函数中传递参数和返回值: Sub Example()Dim x As Integer, y As Integerx ...

  9. python 定义函数时,参数和返回值的数据类型注释

    """ a:int 表示添加a的数据类型注释,但事实上就算传入a的值不是int类型也不会报错,可以正常运行; 但编译器会警告. b:int = 5 表示添加b的数据类型注 ...

最新文章

  1. 在ATS 5.3.0上测试网页加速插件ats_pagespeed
  2. 用户态线程在AI中的应用
  3. 使用FluentValidation来进行数据有效性验证
  4. git 更新远程分支列表(亲测)
  5. python列表反向取值_Python列表的反向遍历,python,逆序
  6. 《软件建模与设计: UML、用例、模式和软件体系结构》一一3.1 软件生存周期模型...
  7. Linux socket
  8. jQuery最新1.4 版本的十五个新特性
  9. 关于趋势科技防毒墙网络版的卸载
  10. 计算机网络结构示意图,常见的五种计算机网络拓扑结构分析
  11. 你真的了解性能压测中的SLA吗?
  12. Java随机获取男主角 女主角名字
  13. 投稿动态无法删除的情况下,如何批量删除B站动态?
  14. 易基因|RNA m7G甲基化测序(m7G-MeRIP-seq)
  15. 卷积神经网络—全连接层
  16. 现在智能机怎么玩Java游戏,教你如何用安卓机玩JAVA老游戏
  17. Portable Chrome 32/64
  18. 【代码阅读】WarpGAN: Automatic Caricature Generation
  19. KD树+BBF+KNN使用C#实现(3)
  20. 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解

热门文章

  1. TS01 为什么要使用TypeScript
  2. Rust Rocket框架跨域设置
  3. lexaiduer psd_简约自然风清新零食早餐麦片食品燕麦详情_psd素材免费下载_ 790*6368像素(编号:24565017)...
  4. Android 使用ProgressBar 实现一个水平方向走动的进度条
  5. Unity 3D作业八:粒子系统
  6. sona:Spark on Angel任务启动流程分析
  7. 软件测试用例等价类边界值,做软件测试,测的是一个论坛,请问怎么设计论坛的测试用例呢?要求用到等价类 边界值 决策表中至少两个...
  8. scp命令默认传输速度多大_linux中scp命令使用技巧详解(传输速度)linux操作系统 -电脑资料...
  9. 开源的lua-studio使用VS2019编译过程
  10. 【技术写作】怎样通过技术写作实现财富自由?