可以只传$a
和$c
吗
<?php
$a = new c;
class c
{
function __construct(){
$this->f(1,,1);//会报错
}
function f($a, $b = 'hello', $c)
{
if($a) echo $a;
if($b) echo $b;
if($c) echo $c;
}
}
?>
可以只传$a
和$c
吗
<?php
$a = new c;
class c
{
function __construct(){
$this->f(1,,1);//会报错
}
function f($a, $b = 'hello', $c)
{
if($a) echo $a;
if($b) echo $b;
if($c) echo $c;
}
}
?>
如果代码你无法修改,那么这道题基本无解。
参数默认值就是当你没有实参的时候才起作用,这里放在第二个位置,除非你传的也是hello,否则,怎么样都会替换,如果你直接传f(1),那么因为第三个形参没有实参,还是会一样报错
既然你的 b 有默认值了, 你可以再传一遍默认值
function __construct(){
$this->f(1,'hello',1);//
}
或者
function __construct(){
$this->f(1,1);//会报错
}
function f($a, $c, $b = 'hello')
{
if($a) echo $a;
if($b) echo $b;
if($c) echo $c;
}
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答628 阅读✓ 已解决
802 阅读
再改不了
f()
方法的情况下,可以加个方法来实现_f()
方法接收到的参数,会依次传值给f()
方法中没有默认值的参数。