标签: subroutine

语法:VB.NET子例程中的"Exit Sub"或"Return"

"Exit Sub"或"Return"似乎都完成了同样的事情 - 退出子程序.他们的工作方式有何不同?

那是,

Private Sub exitNow()
    Exit Sub
End Sub
Run Code Online (Sandbox Code Playgroud)

要么

Private Sub exitNow()
    Return
End Sub
Run Code Online (Sandbox Code Playgroud)

vb.net syntax return subroutine

56
推荐指数
3
解决办法
7万
查看次数

我何时应该使用&调用Perl子例程?

我听说人们不应该&用来调用Perl subs,即:

function($a,$b,...);
# opposed to
&function($a,$b,...);
Run Code Online (Sandbox Code Playgroud)

我知道一个参数列表变成可选的,但在某些情况下哪些是适合使用的,&以及你绝对不应该使用它的情况?

当省略时,性能增加如何发挥作用&呢?

perl subroutine

48
推荐指数
3
解决办法
3万
查看次数

excel vba用变量调用子程序

我定义了以下子例程:

Sub EnterCellValueMonthNumber(cells As range, number As Integer)

range(cells).Select
ActiveCell.FormulaR1C1 = number

End Sub
Run Code Online (Sandbox Code Playgroud)

当我像这样调用子程序时:

EnterCellValueMonthNumber ("N23:Q23",1)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Compile error Expected: =
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我收到这条消息.有谁知道我错过了什么?

excel vba subroutine

30
推荐指数
1
解决办法
8万
查看次数

Haskell程序的基本结构

我看过的许多Haskell教程几乎完全集中在语法上,而对如何构建程序的报道却很少.

例如...

这是C++应用程序的简要概述:

#include <iostream>
using namespace std;

int addition (int a, int b)
{
  int r;
  r=a+b;
  return (r);
}

int main ()
{
  int z;
  z = addition (5,3);
  cout << "The result is " << z;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我第一次开始学习C++时,这些例子极大地帮助我学习如何将各个部分组合成工作程序.也许我正在寻找错误的地方,但我找不到任何像Haskell那样直接和简单的例子.

我已经知道很多Haskell语法.我可以编写递归列表推导,并操纵字符串,整数和列出wazoo.

简而言之:我只想知道Haskell中两个子例程和变量传递是什么样的.如果我能够对如何构造Haskell程序有一些基本的了解,我可能最终能够将我学到的所有语法都用于某些用途.

haskell function subroutine data-structures

30
推荐指数
1
解决办法
6134
查看次数

将数组和标量传递给Perl子例程

可能重复: 如何将一个数组和一个字符串作为参数传递给函数?

我有一个函数或子例程,它将第一个参数作为数组,第二个参数作为标量.例如,

sub calc {
    my @array = $_[0];
    my $scalar = $_[1];
    print @array, $scalar;
}
Run Code Online (Sandbox Code Playgroud)

问题是该函数使数组等于传入的数组的第一个值,并且标量是传入的数组的第二个值.当我想要第一个数组是整个数组时,我不知道需要制作数组的深层副本.例如,

my @array = ('51', 'M');
my $scalar = 21;
Run Code Online (Sandbox Code Playgroud)

calc(@array, $scalar)
Run Code Online (Sandbox Code Playgroud)

51 M在我想要的时候打印51 M 21.

perl reference subroutine

29
推荐指数
4
解决办法
6万
查看次数

在Fortran中正确使用模块,子例程和函数

我最近在向Fortran程序添加函数时学习了tinterface块.一切都很好,整洁,但现在我想在接口块中添加第二个功能.

这是我的界面块:

interface
    function correctNeighLabel (A,i,j,k)
    integer :: correctNeighLabel
    integer, intent(in) :: i,j,k
    integer,dimension(:,:,:),intent(inout) :: A
    end function

    function correctNeighArray (B,d,e,f)
        character :: correctNeighArray
    integer, intent(in) :: d,e,f
    character, dimension(:,:,:),intent(inout) :: B
    end function
end interface
Run Code Online (Sandbox Code Playgroud)

在我看来,这可能不是最好的选择.

我已经研究过子程序,但我不太相信它是正确的解决方案.我正在做的是相对简单的,我需要将参数传递给子例程,但我看到的所有子例程都是a)复杂的(即函数太复杂),和b)不接受参数,它们表现得好像他们操纵变量而不将它们传递给它们.

我没有真正正确地研究模块,但从我所看到的不适合使用的模块.

我应该在哪个时候使用,以及如何最好地使用它?

fortran module function subroutine fortran90

28
推荐指数
3
解决办法
4万
查看次数

Perl - 子例程重新定义

我之前已经问过这个问题或者搜查过其他人问过 - 为什么我收到警告" 子程序mySub重新定义在../lib/Common.pm第x行 "?并且你总是得到你在同一个代码中声明sub两次的答案.我创建了这个测试包:

整个文件---------------

package MyCommonPkg;

use strict;

sub thisSubroutineIsNotDefinedAnywhereElse{
}

1;
Run Code Online (Sandbox Code Playgroud)

整个文件---------------

我使用perl脚本使用这个包,它使用其他包,也使用这个包,我得到警告:

子程序ThisSubroutineIsNotDefinedAnywhereElse在../lib/MyCommonPkg.pm第19行重新定义.

我保证我没有在其他地方声明这个子.这是由循环引用引起的吗?如何跟踪此警告的原因并进行修复?

perl subroutine

27
推荐指数
4
解决办法
3万
查看次数

如何在Fortran中为函数名设置别名

不确定标题是否放好.建议欢迎.

这就是我想要做的.检查一个条件,然后决定在循环中使用哪个函数.例如:

if (a < 0) then
    loop_func = func1
else
    loop_func = func2
endif
Run Code Online (Sandbox Code Playgroud)

然后我可以loop_func在编写循环时用作指针.这两个函数都采用完全相同的输入,并且是基于值的解决问题的不同方法a.这将允许我只有一个代码块,而不是两个几乎相同的块.这也适用于子程序.

有什么想法可以实现吗?

谢谢.

alias fortran pointers function subroutine

27
推荐指数
2
解决办法
1万
查看次数

如何使用散列作为Perl中子例程的参数?

我被要求修改一些现有代码以添加一些额外的功能.我在Google上搜索过,似乎无法找到答案.我有一些这样的效果......

%first_hash = gen_first_hash();
%second_hash = gen_second_hash();
do_stuff_with_hashes(%first_hash, %second_hash);

sub do_stuff_with_hashes
{
    my %first_hash = shift;
    my %second_hash = shift;

    # do stuff with the hashes
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Odd number of elements in hash assignment at ./gen.pl line 85.
Odd number of elements in hash assignment at ./gen.pl line 86.
Use of uninitialized value in concatenation (.) or string at ./gen.pl line 124.
Use of uninitialized value in concatenation (.) or string at ./gen.pl line 143.
Run Code Online (Sandbox Code Playgroud)

第85行和第86行是子例程中的前两行,124和143是我访问哈希的地方.当我查找这些错误时,似乎暗示我的哈希值未初始化.但是,我可以验证哈希值是否有值.为什么我会收到这些错误?

parameters perl hash subroutine

25
推荐指数
4
解决办法
3万
查看次数

发现Perl模块的所有子程序的最佳方法是什么?

以编程方式发现perl模块具有的所有子例程的最佳方法是什么?这可以是一个模块,一个类(没有@EXPORT),或者介于两者之间的任何东西.

编辑:下面的所有方法看起来都可以.我可能在生产中使用Class :: Sniff或Class :: Inspector.然而,莱昂的回答被标记为"被接受",因为它回答了提出的问题,即使no strict 'refs'必须使用.:-) Class :: Sniff可能是一个很好的选择,因为它的进展; 看起来很多想法已经进入其中.

reflection perl perl-module subroutine

24
推荐指数
3
解决办法
9321
查看次数