天道酬勤,学无止境

return

Nitpicking: Tcl storing in a variable or not, for speed, in procedures

问题 这是一个普遍的问题。 假设 TCL 8.6,假设我有一个相当短的程序。 我有两种返回感兴趣值的方法: 1. 使用一些标准做法 if/else 代码,存储在变量中,并返回变量的值。 例如: proc me { gop goo } { if { [ lomsa $gop ] { set ret [ foo $goo $gop ] } else { set ret [ bar $gop $goo ] } return $ret } 2.使用三元参数,基本上,程序没有添加私有变量(即只使用参数)。 三元表达式的输出是返回值。 例如: proc me { gop goo } { expr { [ lomsa $gop ] ? [ foo $goo $gop ] : [ bar $gop $goo ] } } 我团队的一些成员认为可读性在第 1 项中稍好一些。 我无法在我的 TCL 设置中访问伪代码引擎(它是来自供应商的 shell),但我认为代码的差异及其性能会是,但如果有的话,也只是轻微的。 即,该过程需要将返回的值存储在某处。 为其注册特定变量的成本是多少,而不是将其保留为返回值? 这个问题可以扩展,例如,对于 switch 语句。 同样的规则适用。 switch 语句可以存储在变量中,然后在 switch 之后返回变量的值,或者 switch 语句将只返回值,而不将其存储在变量中

2022-05-17 05:04:04    分类:技术分享    variables   return   tcl   store   ternary

Returning data from anonymous, asynchronous functions? [duplicate]

问题 这个问题在这里已经有了答案: 如何从异步调用中返回响应43 个答案 9 年前关闭。 考虑: function ajaxCall(url, callback) { $.ajax({ type: "GET", url: url, success: function (data) { // <-- fail point: where does the returned data go, now? // do stuff with data if ( callback ) { var ret = callback(); if ( ret !== undefined ) { return ret; } } } }); } function fooBar() { return ajaxCall('some/url', function () { // do stuff return some_value; } } 是的,所以基本上,我想保留请求的异步性,这样浏览器就不会挂起,但最终仍会返回一个值……这是一个简化的示例,尽管我可能会进一步简化它。 事实上,我看到的唯一障碍是$.ajax与其success:匿名函数。 哼。 回答1 您不能像这样异步使用调用,回调在您的调用函数早已返回之后运行。 相反,您需要做的是调用需要数据的函数作为(或整个)回调的一部分,例如: function

2022-05-16 18:03:07    分类:技术分享    javascript   jquery   asynchronous   return   anonymous

Strange debugger behaviour in async method

问题 当我跨过代码中的断点时,我遇到了调试器的奇怪行为: public async Task DoSomeWork() { await Task.Run(() => { Thread.Sleep(1000); }); var test = false; if (test) { throw new Exception("Im in IF body!"); } } 调试器进入if正文。 值得注意的是,异常并没有真正被抛出,而是看起来确实如此。 因此,如果您将断点放在throw上,您将无法重现。 您必须将它放在上面并下到if主体才能抓住它。 这同样适用于任何类型的异常实例(以及显式null ),甚至适用于return而不是throw 。 除此之外,即使我用await删除行它也有效。 我试图从不同的 PC 上运行这个代码片段,所以它不是 PC 问题。 我还认为这是 VS 代码中的错误,并试图在 JetBrains 的 Rider 中运行它 - 结果相同。 我确定这是异步的,但它是如何明确工作的? 回答1 您的代码使用 Visual Studio 2015 在“调试”版本中轻松重现了该问题。我只需添加Program.Main()并调用DoSomeWork().Wait(); ,在方法中设置断点并逐步执行。 至于为什么会这样,这无疑是由于正在重写的async方法和生成的调试数据库(.pdb

2022-05-16 06:17:03    分类:技术分享    c#   debugging   asynchronous   return   throw

Evaluation in return statement

问题 //prog1.c #include <stdio.h> int f(int *a,int *b,int c) { if(c == 0) return 1; else { *a = *a + 1; *b = *b - 1; c = c - 1; return (*a + f(a,b,c) + *b); } } int main() { int a = 3,b = 3,c = 3; printf("%d\n",f(&a,&b,c)); return 0; } 我使用gcc和clang-3.5执行了程序,发现 output = 16 。 我认为可能有一些特定于实现的行为,例如以下代码 //prog2.c #include <stdio.h> int f(int *x,int *y,int *z) { *x = *x + 1; *y = *y + 1; *z = *z + 1; return 0; } int main() { int a=0,b=0,c=0; printf("%d %d %d\n",a,f(&a,&b,&c),b);; return 0; } // gcc output : 1 0 0 // clang-3.5 : 0 0 1 在prog1.c中, return语句中是否有任何特定于实现的行为? 如果不是,它是如何评估的? 我可能不知道某种undefined

2022-05-15 21:46:46    分类:技术分享    c   function   pointers   return   printf

Return variable not working in PHP (i.e. no value returned!)

问题 我更喜欢用 Python 语言编程,但必须使用 PHP 来完成特定的网站应用程序项目。 在 PHP 中,我试图将一个值从函数“返回”到主程序环境(用于后续计算),但无论我尝试什么,在我的函数中计算的值都不会返回值(而是从函数回显工作正常)。 在 Python 中,我从来没有遇到过返回变量的问题:即,从函数返回的所有值对于主程序和/或调用产生返回值的函数的其他函数来说都是可用和可访问的。 有人可以告诉我如何解决这个问题吗? 在过去的两天里,我一直在搜索谷歌和网站 ike stackoverflow,但没有成功。 我有许多 O'Reilly 计算机书籍,包括许多关于 PHP 的书籍,我在其中交叉引用了我的研究并阅读了有关 RETURN 函数的所有内容 - 似乎我做的一切都是正确的,甚至专门声明了要返回的值。 至关重要的是,我能够返回值并访问这些值以便继续开发该项目 - 否则,如果我无法返回值以进行进一步处理,我将陷入困境! 以下是相关的代码片段: // DECLARE FUNCTIONS // FUNCTION function Calculation_IsArray ($ArrayAny){ if (is_array($ArrayAny)) { echo '<div>THIS VAR IS AN ARRAY</div>'; $Var_IsArray = TRUE; return

2022-05-14 16:21:25    分类:技术分享    php   return   return-value

When is the copy constructor for the return value happens

问题 我有以下成员函数: Person ClassB::DoSomethingAndReturnPerson() { RAIIMutex myLock(&m_mutex); return m_person; } RAIIMutex是一个辅助类,它接收互斥体并将其锁定在构造函数中并在析构函数中释放。 m_person是Person类型(体积非常小)。 其他线程中的其他函数可能会更改此成员。 我想按值返回m_person (返回一个副本),当然我想避免m_person在另一个线程中被更改而在返回中被复制的情况,所以我添加了锁。 但首先会发生什么? 编译器是先创建m_person的副本还是先调用myLock的析构函数? 理论上它很容易通过做这样的事情来解决: Person ClassB::DoSomethingAndReturnPerson() { RAIIMutex myLock(&m_mutex); Person tmp = m_person; return tmp; } 但我有兴趣知道我的问题的答案。 谢谢 回答1 之前会处理返回值的复制初始化。 从标准来看,[stmt.return]/3(强调我的) 调用结果的复制初始化在由 return 语句的操作数建立的完整表达式末尾处的临时变量的销毁之前排序,而后者又在局部变量的销毁之前排序([stmt .jump]) 包含 return

2022-05-14 09:17:03    分类:技术分享    c++   return   language-lawyer

Removing new line function when enter button is pressed Java

问题 我有一个文本区域,当按下 Enter 按钮时,我想将其变为空白。 我知道这通常可以使用 setText 方法来完成。 但是,当我这样做时,文本被删除,但按下回车键创建的新行函数。 我的问题是,是否要阻止此默认操作的发生? 谢谢 回答1 final JTextArea ta = new JTextArea(); ta.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { } @Override public void keyReleased(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ENTER){ ta.setText(""); } } @Override public void keyPressed(KeyEvent e) { } }); 回答2 你好我有一个文本区域,当按下 Enter 按钮时,我想将其变为空白。 这个,我明白了。 您可以这样做: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Main { public static void main(String[]args) { final JFrame

2022-05-13 22:42:10    分类:技术分享    java   function   return

C# Not able to return to my another class file

问题 我正在尝试创建一个自动化系统,但我在这里遇到了问题。 以下是简要说明 main.cs [Test] public void Test_MyPage() { LoginPageObject objLogin = new LoginPageObject(); FunctionTest cc = objLogin.FunctionAbcTest(); FunctionTest objAbcTest = new FunctionTest(); } LoginPageObject.cs // Login Functionality //public void Login (some args){...} // And public FunctionTest FunctionAbcTest() { //some functions to be called .....(1) return new FunctionTest(); } FunctionTest.cs //Test automation functions are called 预期结果:返回 FunctionTest 类继续进一步测试 实际结果:在 (1) 中调用的某个函数之后,它自动化完成但不返回到 FunctionTest.cs 我真的需要帮助。 我将衷心感谢您的帮助。 请注意: 有关更多描述,您可以参考我的项目。

2022-05-12 13:29:16    分类:技术分享    c#   return

Returning From a Void Function in C++

问题 考虑以下代码段: void Foo() { // ... } void Bar() { return Foo(); } 在 C++ 中使用上述方法而不是更常见的方法的正当理由是什么: void Foo() { // ... } void Bar() { Foo(); // no more expressions -- i.e., implicit return here } 回答1 在您的示例中可能没有用,但是在某些情况下很难处理模板代码中的void ,我希望这条规则有时会有所帮助。 非常人为的例子: #include <iostream> template <typename T> T retval() { return T(); } template <> void retval() { return; } template <> int retval() { return 23; } template <typename T> T do_something() { std::cout << "doing something\n"; } template <typename T> T do_something_and_return() { do_something<T>(); return retval<T>(); } int main() { std::cout <<

2022-05-12 12:48:03    分类:技术分享    c++   return   void

Fortran return statement

问题 我试图让一些在 gfortran 下编译的代码在 g77 下编译得很好。 问题似乎来自一个return语句: ffuncs.f:934.13: RETURN E 1 错误: (1) 处的备用 RETURN 语句需要 SCALAR-INTEGER 返回说明符 在代码中,任何 E 都被指定为 real*8: 隐式实数 *8 ( A - H , O -Z ) 然而,E 从来没有被赋予一个值或任何东西,事实上你在 return 语句之前永远不会看到它。 我对fortran几乎一无所知。 在fortran中带有参数的return语句是什么意思? 谢谢。 回答1 在 FORTRAN(直到 Fortran 77,我非常熟悉)中, RETURN n不用于返回函数值; 相反,它执行的操作类似于在其他语言中将由异常处理:退出到正常位置以外的代码位置。 您通常会使用标签作为参数调用这样的SUBROUTINE或FUNCTION ,例如 CALL MYSUB(A, B, C, *998, *999) ... 998 STOP 'Error 1' 998 STOP 'Error 2' 如果 MYSUB 出现问题,那么您执行RETURN 1或RETURN 2 (而不是正常的 RETURN),您将直接跳到调用例程中的标签 998 或 999。 这就是为什么通常您需要在该 RETURN 上使用一个整数 -

2022-05-11 18:31:09    分类:技术分享    fortran   return