身份功能有什么用?它只返回相同的值。因此,为什么不简单地放(identity x)
而不是放x
?有人可以举一些在Racket / Scheme中使用身份功能的例子吗?这些文档页面上没有示例:https://docs.racket-lang.org/htdp-langs/beginner.html#%28def.htdp-beginner.%28%28lib._lang%2Fhtdp-beginner..rkt%29.identity%29%29 和https://docs.racket-lang.org/reference/procedures.html?q=identity#%28def. %28%28lib._racket%2Ffunction..rkt%29._identity%29%29
答案 0 :(得分:7)
当函数执行由其参数定制的某种映射时,identity
函数主要用作某些高阶函数(将函数作为参数的函数)的参数,并且您希望传递值不变。†
Scheme / Racket中一个非常常见的习惯用法是使用(filter identity ...)
从列表中删除所有#f
值:
> (filter identity '(1 2 #f 4))
'(1 2 4)
这是有效的,因为filter
将提供的函数应用于列表的每个元素,然后丢弃导致#f
的值。通过使用identity
,可以检查值本身。从这个意义上讲,identity
是功能性的“无操作”。
您有时会看到这个成语拼写为(filter values ...)
而不是(filter identity ...)
,因为values
恰好是提供一个参数时的标识函数,它来自racket/base
而不是racket/function
identity
。不过,我更喜欢明确使用if(isset($_POST["Submit"]))
{
// echo "value is .".$a;
echo $_POST["gr_num"];
echo $_POST["school_code"];
$sqlstr="select studentname from gr_master where grid='".$_POST["gr_num"]."' and schoolcode='".$_POST["school_code"]."'";
$sqlstr1="select schoolname from school_master where schoolcode='".$_POST["school_code"]."'";
$result=mysql_query($sqlstr);
$result1=mysql_query($sqlstr1);
$row=mysql_fetch_array($result);
$row1=mysql_fetch_array($result1);
echo $row["studentname"];
$studentname_var=$row['studentname'].'"';
echo $studentname_var;
}
的版本,因为我认为发生的事情有点清楚。
†对于Haskell等效问题,身份函数的描述来自this nice answer。