以下代码:
<?php
class Type {
}
function foo(Type $t) {
}
foo(null);
?>
运行时失败:
PHP Fatal error: Argument 1 passed to foo() must not be null
为什么不允许像其他语言一样传递null?
尝试:
function foo(Type $t = null) {
}
查看PHP函数参数。
从PHP7.1开始,可以使用null类型,作为函数返回类型和参数。类型?T
可以具有指定类型的值T
,或null
。
所以,你的函数可以看起来像这样:
function foo(?Type $t)
{
}
只要您能够使用PHP7.1,这种表示法就应该优先于函数foo(Type$t=null)
,因为它仍然会强制调用方显式指定参数$t
的参数。
PHP 7.1或更新版本(2016年12月2日发布)
您可以使用此语法将变量显式声明为null
function foo(?Type $t) {
}
这将导致
$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error
因此,如果您想要一个可选参数,您可以遵循约定Type$t=null
,而如果您需要使一个参数同时接受null
及其类型,您可以遵循上面的示例。
你可以在这里读更多。
PHP7.0或更高版本
您必须添加一个默认值,如
function foo(Type $t = null) {
}
这样,就可以传递一个空值。
手册中关于类型声明的章节中记录了这一点:
如果参数的默认值设置为NULL
,则可以声明接受NULL
值。
问题内容: 我正在为核心数据编写通用包装类。 这是我的一些基本类型。没什么特别的。 我已经将我的coredata写在协议中抽象化了。如果您让我知道您对我要提出的抽象的意见,我将不胜感激。但是在扩展中,我遇到了以下错误: 无法将类型“ NSFetchRequest”的值转换为预期的参数类型“ NSFetchRequest <_>” 不确定我该如何解决。我尝试了各种更改代码的尝试,但未成功…… 另外,
问题总结:我想传递一个带有类型参数(如
我是静态编程语言的新手,我发现静态编程语言不同于Java的特性之一是方法默认参数。https://kotlinlang.org/docs/functions.html#default-arguments 我正在创建一个简单的Kotlin应用程序,它将null值传递给具有2个不可为null的默认参数的方法,这会导致编译错误-类型不匹配:推断的类型是String?但应为字符串)。 一种解决方法是将方法
问题内容: 问题摘要: 我想将具有类型参数(例如)的类作为类型参数传递给泛型方法。 假设我有一个方法: 当然,此方法对于任何类型的类都可以正常使用。我可以这样调用该方法,例如: 问题: 我发现我不能这样做: 从句法上讲,这显然是无效的。但是,我不确定如何实现这样的目标。我当然可以通过,但是泛型类型的添加使其在语法上不再有效,并且我想不出解决方法。 唯一的直接解决方案是这样的事情(看起来很愚蠢):
如何执行?因为当我运行它时,它说,。 我是否应该删除,并在函数中对其进行实例检查?但是,我如何访问
本文向大家介绍String类型传递是值传递,char[]类型传递是引用传递的实现,包括了String类型传递是值传递,char[]类型传递是引用传递的实现的使用技巧和注意事项,需要的朋友参考一下 如下所示: 结果是:str任然是hello,ch的第一个元素a变为c 以上就是小编为大家带来的String类型传递是值传递,char[]类型传递是引用传递的实现的全部内容了,希望对大家有所帮助,多多支持呐