标签: declaration

Javascript中的模糊函数声明

我是Javascript的新手,并对函数声明的工作方式感到困惑.我对此做了一些测试并得到了一些有趣的结果:

say();

function say()
{
    alert("say");
}
Run Code Online (Sandbox Code Playgroud)

前进声明工作和弹出"说"

相反

say();

say = function()
{
    alert("say");
}
Run Code Online (Sandbox Code Playgroud)

没有工作,虽然它也声明了一个函数对象

如果我们声明该函数并在之后重新声明:

function say()
{
    alert("speak");
}

say();

function say()
{
    alert("say");
}
Run Code Online (Sandbox Code Playgroud)

我得到"说"而不是"说话".这太令人惊讶了!

好.似乎只有最新的函数声明才有效.然后让我们首先声明函数对象,然后是"常规"函数:

say = function()
{
    alert("speak");
}

say();

function say()
{
    alert("say");
}

say();
Run Code Online (Sandbox Code Playgroud)

另一个惊喜,是"说话",然后是"说话"."常规"功能声明根本不起作用!

是否有所有这些的解释?并且,如果"常规"函数声明真的是"脆弱的"并且可以通过具有相同名称的函数对象轻松覆盖,那么我应该远离那个吗?

另一个问题是:只使用函数对象格式,前向声明是否变得不可能?有没有办法在Javascript中"模拟"它?

javascript declaration function forward-declaration

11
推荐指数
1
解决办法
5827
查看次数

函数声明中的静态关键字在函数定义中可能会丢失吗?

我希望有一个静态函数,我在定义之前在我的.c文件中声明:

//file a.c version 1
static int foo();
...
static int foo()
{
...
}
Run Code Online (Sandbox Code Playgroud)

但是,似乎我可以将static关键字从函数定义中删除,并且我没有得到编译器警告......例如

//file a.c version 2
static int foo();
...
int foo()
{
...
}
Run Code Online (Sandbox Code Playgroud)

假设这两种形式完全相同,我是否正确?
如果是这样,为什么允许这种差异,我应该使用哪种形式?

c c++ static declaration function

11
推荐指数
1
解决办法
7321
查看次数

PHP中的Aptana - 函数声明?

我想知道是否有更容易(或任何)方式在PHP文件中声明函数.例如,假设我们有以下功能:

function myfunc($parama = '', $paramb = 0) {}
Run Code Online (Sandbox Code Playgroud)

是否可以添加(作为PHP包的一部分)一个片段来创建:

  /***
   * 
   * 
   * @param     $parama String
   * @param     $paramb Integer
   * @return   
   * @author   
   * @copyright {current_date}
   */
Run Code Online (Sandbox Code Playgroud)

如果它是可行的,捆绑包将通过键入/***上面的功能自动添加它.

任何想法都热烈欢迎.我很久以前就设法在TextMate中做到了,但是无法弄清楚如何在Aptana中做到这一点.

仅供参考:我指的是Aptana 3.0.6.

谢谢!:)

...

(一小时后)

实际上,我想出来了 - 为此创建了一个片段:

snippet 'Declare Function' do |s|
  s.trigger = 'docf'
  s.scope = 'source.php'
  s.expansion = '/***
 * 
 *
 * @param   
 * @return  
 * @author  $6
 * @copyright ' + Time.now.strftime('%Y-%m-%d') + '
 */
function ${1:functionName}($2) 
{
  $0
}'
end
Run Code Online (Sandbox Code Playgroud)

希望它对其他开发者有用.:)

php aptana declaration function code-snippets

11
推荐指数
1
解决办法
1051
查看次数

是否可以在Delphi中为泛型类创建类型别名

我想为泛型类定义类类型(类型别名).我想这样做,因此单元b的用户可以访问TMyType而无需使用单元a.我有这样的单位:

unit a;
interface
type
  TMyNormalObject = class
    FData: Integer;
  end;
  TMyType<T> = class
    FData: <T>;
  end;
implementation
end.

unit b;
interface
type
  TMyNormalObject = a.TMyNormalObject;  // works
  TMyType<T> = a.TMyType<T>; // E2508 type parameters not allowed on this type
implementation
end.
Run Code Online (Sandbox Code Playgroud)

我已经找到了一个我不喜欢的可能的解决方法,因为它可以引入很难找到错误:

TMyType<T> = class(a.TMyType<T>); 
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于它引入了一个新的类类型,而a.TMyType实例不是b.TMyType(而a.TMyNormallClass是b.TMyNormalClass,反之亦然 - 它们指的是同一个类).

delphi generics alias types declaration

11
推荐指数
1
解决办法
3699
查看次数

如何在R中声明用户定义的分布

你如何在R中定义自己的发行版?如果我的分发看起来像这样:

P(D=0)=2/4, P(D=1)=1/4, P(D=2)=1/4
Run Code Online (Sandbox Code Playgroud)

如何将其转换为我可以使用的发行版?

最后,我希望能够使用这些并执行涉及cdfs,icdfs和pmfs的事情.喜欢通过cdf类型的东西找到1的概率.我还需要了解如何绘制图形.但是我会以较小的步骤提出要求并尝试在两者之间解决问题.

r declaration distribution

11
推荐指数
1
解决办法
6632
查看次数

不寻常的C函数声明

我目前正在使用一个旧的C库(在90年代早期制作),以下函数声明使我感到困惑:

#define bland_dll
typedef unsigned short int usint;
typedef unsigned char uchar;

int bland_dll Read_Chan (usint channel);
Run Code Online (Sandbox Code Playgroud)

什么是bland_dll函数的名称,它的返回类型之间在做什么?

谢谢你的灯!

c declaration function

11
推荐指数
1
解决办法
156
查看次数

定义⊤符号

我正在尝试在Perl6中编写一些逻辑语句.

我做了逻辑运算符:

multi sub prefix:<¬> ($n) {
    return not $n;
}

multi sub infix:<?> ($n, $b) {
        return ($n and $b);
}

multi sub infix:<?> ($n, $b) {
        return ($n or $b);
}

multi sub infix:<?> ($n, $b) {
        if $n == True and $b == True {
                return True;
        } elsif $n == True and $b == False {
                return False;
        } elsif $n == False {
                return True;
        }
}

multi sub infix:<?> ($n, $b) {
        return $b …
Run Code Online (Sandbox Code Playgroud)

constants declaration initializer perl6 raku

11
推荐指数
1
解决办法
190
查看次数

C++/CLI:如何在C++/CLI中声明abstract(在C#中)类和方法?

C++/CLI中以下C#代码的等价物是什么?

public abstract class SomeClass
{
    public abstract String SomeMethod();
}
Run Code Online (Sandbox Code Playgroud)

c# abstract-class c++-cli declaration abstract-methods

10
推荐指数
2
解决办法
6421
查看次数

ANSI-C语法 - 数组声明,如[*] et alii

来自-link-的ANSI C语法给出了以下数组声明规则:

 (1) | direct_declarator '[' type_qualifier_list assignment_expression ']'
 (2) | direct_declarator '[' type_qualifier_list ']'
 (3) | direct_declarator '[' assignment_expression ']'
 (4) | direct_declarator '[' STATIC type_qualifier_list assignment_expression ']'
 (5) | direct_declarator '[' type_qualifier_list STATIC assignment_expression ']'
 (6) | direct_declarator '[' type_qualifier_list '*' ']'
 (7) | direct_declarator '[' '*' ']'
 (8) | direct_declarator '[' ']'
Run Code Online (Sandbox Code Playgroud)

现在我对这些问题有一些疑问:

  • 除了(3)只能在C99中使用(1) - (6)吗?
  • 什么是(4)和(5)?关键字"静态"让我困惑.
  • 在哪里使用(6)?
  • 以下两个函数原型之间的区别是什么:

    void foo(int [*]);

    void foo(int []);

谢谢.

c arrays grammar declaration

10
推荐指数
1
解决办法
1743
查看次数

Objective-C块参数

假设我们有这个块:

int (^aBlock)(BOOL) = ^(BOOL param) { ...
Run Code Online (Sandbox Code Playgroud)

我目前对此的理解是:第一个int是返回类型,(^aBlock)(BOOL)给出方法的名称和参数的类型,并且= ^(BOOL param)是块内的参数名称...再次加上参数的类型?

为什么语法必须列出参数类型两次?这两种类型可能会有所不同吗?

parameters declaration objective-c objective-c-blocks

10
推荐指数
2
解决办法
4316
查看次数