为什么更多主流的静态类型语言不支持返回类型的函数/方法重载?我想不出那样做.通过参数类型支持过载似乎没有那么有用或合理.怎么这么不受欢迎呢?
programming-languages overloading language-design function-calls
我知道在php中你可以拨打电话:
$function_name = 'hello';
$function_name();
function hello() { echo 'hello'; }
Run Code Online (Sandbox Code Playgroud)
这可能在.Net吗?
有没有办法找出,PHP中的函数从哪里调用?例:
function epic()
{
fail();
}
function fail()
{
//at this point, how do i know, that epic() has called this function?
}
Run Code Online (Sandbox Code Playgroud) 我试图在jQuery中调用用户定义的函数:
$(document).ready(function() {
$('#btnSun').click(function() {
myFunction();
});
$.fn.myFunction = function() {
alert('hi');
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnSun">Say hello!</button>Run Code Online (Sandbox Code Playgroud)
我也尝试了以下内容:
$(document).ready(function() {
$('#btnSun').click(function() {
myFunction();
});
});
function myFunction() {
alert('hi');
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnSun">Say hello!</button>Run Code Online (Sandbox Code Playgroud)
它似乎不起作用!知道我哪里错了吗?
我正在尝试使用PostgreSQL的函数来保存一些数据.这是创建脚本:
-- Function: "saveUser"(integer, character varying, character varying, character varying, character varying, character varying)
-- DROP FUNCTION "saveUser"(integer, character varying, character varying, character varying, character varying, character varying);
CREATE OR REPLACE FUNCTION "saveUser"("pUserID" integer, "pName" character varying, "pLastName" character varying, "pUserName" character varying, "pPassword" character varying, "peMail" character varying)
RETURNS boolean AS
$BODY$
BEGIN
SELECT 1
FROM "USERS"
WHERE "userID" = $1;
IF FOUND THEN
UPDATE "USERS"
SET "name" = $2,
"lastName" = $3,
"userName" = $4,
"password" = $5, …Run Code Online (Sandbox Code Playgroud) 当您使用数组参数在Python中定义函数时,该参数的范围是什么?
这个例子来自Python教程:
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
Run Code Online (Sandbox Code Playgroud)
打印:
[1]
[1, 2]
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
我不太确定我是否理解这里发生的事情.这是否意味着数组的范围超出了函数的范围?为什么数组会记住从调用到调用的值?来自其他语言,只有当变量是静态的时候我才会期望这种行为.否则它似乎应该每次重置.实际上,当我尝试以下内容时:
def f(a):
L = []
L.append(a)
return L
Run Code Online (Sandbox Code Playgroud)
我得到了我期望的行为(每次调用都重置了数组).
所以在我看来,我只需要def f(a, L=[]):解释这一行- L变量的范围是什么?
是否可以在浏览器的JavaScript控制台中查看JavaScript函数调用?我知道您可以查看XHR,但是您可以查看函数调用吗?
例如,我将鼠标悬停在页面上的某个元素上,然后弹出一个div.我知道有一个JavaScript函数被调用来显示弹出窗口,所以能够在控制台中查看这个调用会很好,所以我可以看到调用了什么函数.
我错过了什么或者这不可能吗?
只是想整理一个程序,并想知道是否有人可以在同一行上多次调用一个队列上的成员函数给我一些语法糖.
例如,更改:
queue<int> q;
q.push(0);
q.push(1);
Run Code Online (Sandbox Code Playgroud)
类似于:
q.(push(0), push(1));
//or
q.push(0).push(1);
Run Code Online (Sandbox Code Playgroud)
我知道它看起来有点荒谬,并不实用.但是,如果我想缩短这样的一小部分代码,是否可以选择这样做?从我到目前为止所读到的内容来看,只有在函数具有非void返回值时才能链接方法.
当然,这是一个选项:
q.push(0); q.push(1);
Run Code Online (Sandbox Code Playgroud)
但我试图避免在q那里两次.再次......语法糖:)
这里的目标不是初始化,而是压缩对象/容器在代码块中生成的次数.我引用队列的原因是因为它是动态的.
c++ member-functions syntactic-sugar function-calls method-chaining
function-calls ×10
php ×2
.net ×1
c ×1
c# ×1
c++ ×1
debugging ×1
function ×1
java ×1
javascript ×1
jquery ×1
overloading ×1
parameters ×1
postgresql ×1
python ×1
scope ×1
string ×1
system-calls ×1
user-defined ×1