标签: declaration

Haxe语法; 以下是什么意思?

我有以下一点语法:

Void -> Void
//in context example
private var _onClickEvents : List < Void -> Void > ;
Run Code Online (Sandbox Code Playgroud)

这似乎被接受为类型定义,与Bool或相同TextField.我认为它与Haskell如何定义函数类型签名有类似的用途?

syntax haxe declaration function

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

如果我使用'|| ='声明一个常量值会发生什么(坏的)?

我正在使用Ruby on Rails v3.0.9,我想知道如果我声明一个常量值会发生什么(坏的):

MAX_LENGTH ||= 30
Run Code Online (Sandbox Code Playgroud)

顺便说一句:我正在开发一个"acts_as_something"插件(在我的应用程序中有多个类"acts_as_something"),我必须声明上面的常量值,以便在/.../log/apache2/error.log(生产模式)中不显示\生成"警告消息",如下所示:

warning: already initialized constant MAX_LENGTH
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails constants declaration ruby-on-rails-3

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

怪异的C#声明变量

我正在制作一些软件,通​​过我PC上的COM端口与某些电子设备进行串行通信.我必须与之前没有使用的SimplicTI协议进行通信.我找到了一个可以让我进行交流的库,但是由于我想成为一名程序员,我想了解这个库的每一个语句.在库的源代码中,我偶然发现了以下变量声明:

byte len = (data == null) ? (byte)0 : (byte)data.Length
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?我似乎无法掌握这一说法.

顺便说一下,变量"data"是一个字节数组.

c# variables declaration conditional-operator

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

声明一个字节变量

对于十六进制'88',我们可以声明这样的字节变量

Dim bytes = New Byte() { &H88 }
Run Code Online (Sandbox Code Playgroud)

我的情况,88被分配给变量hexvalue

如何用变量十六进制值声明字节?

Dim bytes = New Byte() { &H & hexvalue }
Run Code Online (Sandbox Code Playgroud)

以上抛出语法错误.

vb.net declaration

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

此List <List>中有什么不正确?

这似乎是正确的:

IList<IList<string>> MyList = new List<IList<string>>();
IList<string> List_Temp = new List<string>();
MyList .Add(List_Temp );
Run Code Online (Sandbox Code Playgroud)

这似乎不正确:

IList<List<string>> MyList = new List<List<string>>();
IList<string> List_Temp = new List<string>();
MyList .Add(List_Temp );
Run Code Online (Sandbox Code Playgroud)

为什么第二个不正确?

.net c# declaration list

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

空数组自动初始化内容?

怎么会

int alone;
System.out.println(alone);
Run Code Online (Sandbox Code Playgroud)

给出错误但是

 int[] arr = new int[1];
 System.out.println(arr[0]);
Run Code Online (Sandbox Code Playgroud)

等于0?初始化一个空数组时,它会自动将其内容初始化为0(或null等)吗?

java arrays initialization declaration

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

复杂的声明(C)

可能重复:
如何理解复杂的函数声明?
螺旋规则和'声明跟随用法'用于解析C表达式

在你可能已经读过的K&R的C编程语言书中有一个标题相同的部分,"复杂的声明" .我正在阅读这本书并试图用C语言改进自己.在阅读了上面提到的部分之后,我想我无法理解C声明语句的语法背后的逻辑.1,2,3和4来自该部分5和6来自其他页面.

  1. int (*daytab)[13] daytab:指向int的数组[13]的指针

  2. void (*comp)() comp:函数返回void的指针

  3. char (*(*x())[])() x:函数返回指向函数返回char的指针array []的指针

  4. char (*(*x[3])())[5] x:指向函数的指针的数组[3]返回指向char的数组[5]的指针

  5. typedef int (*PFI)(char *, char *) 创建类型PFI,用于指向返回int的函数(两个char*参数)的指针.语法如何在这里工作?

最后,我的问题是:

  • 您能否通过上述示例解释您的思维方式和阅读复杂的声明?
  • 1,3,4这样的东西是否实际可用且需要?如果是这样,你能写一些代码示例吗?

c syntax declaration

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

无法在C++类中创建构造函数

我正在尝试用C++创建一个类(我很长时间没有使用过类!)我试图用以下方式创建一些构造函数:

#ifndef TAAP_HEAD
#define TAAP_HEAD

class TaaP
{
public:
  // default cosntructor
  Taap();

  // constructor with xyz
  Taap(double xyz[3]);

private:
  double m_xyz[3];
  double m_Rho;
  double m_GradRho[3];
  double m_HessRho[3][3];
  double m_EigenValues[3];
  double m_EigenVectors[3][3];
};
#endif
Run Code Online (Sandbox Code Playgroud)

Taap()将简单地分配xyz给哪里{0.0, 0.0, 0.0},但Taap(double xyz[3])将允许用户输入他们自己的起始坐标.

我在编译时遇到的错误是:

hdr_taap.h:9:8: error: ISO C++ forbids declaration of ‘Taap’ with no type [-fpermissive]
   Taap();
        ^
hdr_taap.h:12:21: error: ISO C++ forbids declaration of ‘Taap’ with no type [-fpermissive]
   Taap(double xyz[3]);
                     ^
Run Code Online (Sandbox Code Playgroud)

这有意义吗?我曾尝试过很多关于班级建设的例子,看不出我做错了什么.

c++ constructor compiler-errors class declaration

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

在C11中放置迭代器声明(编码风格)

我注意到C11不再允许您在循环结构中声明迭代器变量,例如,以下内容无效:

for (int i = 0; i < 10; ++i)
Run Code Online (Sandbox Code Playgroud)

但这没关系:

int i;
for (i = 0; i < 10; ++i)
Run Code Online (Sandbox Code Playgroud)

鉴于在C99之前甚至不可能在函数开头声明变量(块?C11是否允许函数中任何地方的变量声明?),我很好奇这与安全实践有什么关系.迭代器是应该在它们出现的函数或块的顶部声明,还是在它们被使用的第一个循环之上?我无法看到它在任何方面都有很大的不同,但前一种方法似乎对于移动代码更加健壮.就安全而言,我没有看到任何明显的影响.

另外,首先是C11上述变化的原因是什么?我更喜欢第一个例子中的语法.

编辑:对于我的上一个问题,我想一个问题是,如果多次使用迭代器,for (int i = 0; ...在一个块内移动就不会那么容易重构.

c coding-style declaration c11

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

循环中的变量声明不会重置为默认值

考虑以下代码:

for (int i = 0; i < 10; i++)
{
    bool b;          /* #1 */
    if (i == 0)
    {
        b = true;    /* #2 */
    }
}
Run Code Online (Sandbox Code Playgroud)

我在#1#2设置了断点.

在第一时间(I = 0),b设定为false在#1在#2设置为真.

第二次(i = 1),b在#1处为真.

这对我来说没有意义,因为我假设当在第二个循环(i = 1)中开始时,b在声明时应该再次为假.

我假设在第二个循环中#1处的b = false.

有人在乎解释吗?

c# compiler-construction loops declaration

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