PHP是否有一个don';你不在乎哈斯克尔这样的变数吗?
在这一天,我读到:PHP是否有一个don';你不在乎哈斯克尔这样的变数吗?,php,variables,haskell,Php,Variables,Haskell,在这一天,我读到: \与列表理解中的含义相同。这意味着我们真的不在乎那部分是什么,所以我们只需要写一个\uuuu PHP中也有类似的东西吗?如果是,它可以用来做什么?如果没有,为什么开发人员选择不实现它 您是指函数中的可选参数吗?您可以这样实现: function add($x = 1, $y = 1) { return $x + $y; } add(4,5); //9 add(3); //4 注意:不能只提供第二个参数而不提供第一个参数,类似这样 add(_,4) //error!
\
与列表理解中的含义相同。这意味着我们真的不在乎那部分是什么,所以我们只需要写一个\uuuu
PHP中也有类似的东西吗?如果是,它可以用来做什么?如果没有,为什么开发人员选择不实现它 您是指函数中的可选参数吗?您可以这样实现:
function add($x = 1, $y = 1) {
return $x + $y;
}
add(4,5); //9
add(3); //4
注意:不能只提供第二个参数而不提供第一个参数,类似这样
add(_,4) //error!
不存在。您是指函数中的可选参数吗?您可以这样实现:
function add($x = 1, $y = 1) {
return $x + $y;
}
add(4,5); //9
add(3); //4
注意:不能只提供第二个参数而不提供第一个参数,类似这样
add(_,4) //error!
不存在。不,没有任何东西像PHP中内置的那样。而且也没有太多类似的需求,因为PHP的功能特性现在(随着PHP5.5的出现)才刚刚从童年开始发展。目前,您还没有看到大量接受回调的函数,而且lambda语法有点冗长,因此,允许您更方便地声明lambda的功能在实用性阶梯上并不是很高 在Haskell中,
\uu
是一种简写方式,表示“这里有一个参数,但我不关心它”,并且\u
的每个外观都被认为是一个不同于其他外观的参数
允许您模拟此语法的PHP的一个怪癖是,一个函数可以有多个同名参数:
// compiles with no problem!
function foo($param, $param, $param) {
echo $param;
}
foo(1, 2, 3); // prints 3
因此,如果希望忽略函数的前两个参数,则可以执行此操作:
function foo($_, $_, $param) {}
然而,这对编译器来说并没有什么特别的意义,也和为参数使用不同的名称没有什么不同。它不是惯用的PHP,很可能会让这段代码的读者感到困惑。所以虽然你能做到,但这不是个好主意
另一方面,PHP中有一个地方允许您明确声明您不关心某些信息:list
构造
$a = array(1, 2);
list($x, $y) = $a; // assigns $x = 1 and $y = 2
您可以在列表中跳过任意数量的参数,例如:
list(, $y) = $a; // assigns $y = 2, the first element is ignored
没有,PHP中没有类似的内置功能。而且也没有太多类似的需求,因为PHP的功能特性现在(随着PHP5.5的出现)才刚刚从童年开始发展。目前,您还没有看到大量接受回调的函数,而且lambda语法有点冗长,因此,允许您更方便地声明lambda的功能在实用性阶梯上并不是很高
在Haskell中,\uu
是一种简写方式,表示“这里有一个参数,但我不关心它”,并且\u
的每个外观都被认为是一个不同于其他外观的参数
允许您模拟此语法的PHP的一个怪癖是,一个函数可以有多个同名参数:
// compiles with no problem!
function foo($param, $param, $param) {
echo $param;
}
foo(1, 2, 3); // prints 3
因此,如果希望忽略函数的前两个参数,则可以执行此操作:
function foo($_, $_, $param) {}
然而,这对编译器来说并没有什么特别的意义,也和为参数使用不同的名称没有什么不同。它不是惯用的PHP,很可能会让这段代码的读者感到困惑。所以虽然你能做到,但这不是个好主意
另一方面,PHP中有一个地方允许您明确声明您不关心某些信息:list
构造
$a = array(1, 2);
list($x, $y) = $a; // assigns $x = 1 and $y = 2
您可以在列表中跳过任意数量的参数,例如:
list(, $y) = $a; // assigns $y = 2, the first element is ignored
在你想使用它的地方展示你的例子。并展示它的可能语法。@sectus我只是想知道-不知道它是否有用,这纯粹是假设。一种可能的语法可以是$\uuu
或$
,但这只是基于我的想象。请在您想使用它的地方展示您的示例。并展示它的可能语法。@sectus我只是想知道-不知道它是否有用,这纯粹是假设。一种可能的语法可以是$\uuu
或$
,但这只是基于我的想象。