小编mat*_*thk的帖子

静态变量是类实例变量吗?

简单的问题:

静态变量是基数class instance variable还是class variable基数?

知道这class instance variable是为每个类和子类定义的变量.并且class variable它是所有子类的全局变量,它定义包括它自己.

编辑:知道我窒息了很多C#-ish家伙我正在使用术语类实例,好像一个类是一个MetaClass的实例.这大大简化了我的问题.虽然如果你认为VM肯定有一个代表evrey类的工件(包含方法dictionay,实例大小,超类,......),这并不是完全错误的.谢谢

c# variables static

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

与C++模板混淆

我正在查看一些c ++代码,并且在这种情况下不理解模板声明的目的:

template<> void operator>>(const ClassA& s, const ClassB d) {...}
Run Code Online (Sandbox Code Playgroud)

什么是语义template<>

c++ templates programming-languages semantics

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

堆栈上的整数推送错误

我试图理解为什么是指令:

 pushl  0x4013ea
Run Code Online (Sandbox Code Playgroud)

没有推动预期的价值,而是我把它放在堆栈上:

(gdb) x/wx $esp
0x22ff18:       0xc3899090
Run Code Online (Sandbox Code Playgroud)

我在Windows上使用gdb,如果这可以帮助

谢谢

assembly gdb push

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

Eshell sudo不接受选项

在eshell提示符中,-E选项不能被传递.我以下面的错误结束:

$ sudo -E gmake install
-E: command not found
Run Code Online (Sandbox Code Playgroud)

有人有解决方案吗?谢谢

emacs sudo eshell

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

了解cmd shell中的变量

在Windows的一些shell脚本中,我浏览了一些我无法理解的语法.如果有人让病人向我解释它的作用以及为什么它会很棒.

第一件事就是!! 是关于.有些变量被包围!我不明白它的原因Ex:

!DATE!
!timeMM:~0,1!
...
Run Code Online (Sandbox Code Playgroud)

其次是(我猜是)一种变量替代.一些变量结束:"=但我不知道它的作用.例如:

set cmdlin=%cmdlin:"=%
Run Code Online (Sandbox Code Playgroud)

非常感谢

windows variables shell cmd

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

用于intel x64 arch的Rex前缀解码

在英特尔文档"架构软件开发人员手册Vol 2A"中,表2-4显示了REX前缀位的重要性.

有人可以向我解释当W = 0时如何解释?它说,0 = Operand size determined by CS.D但我不明白是什么CS.D意思.

assembly x86-64 intel machine-code opcode

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

为什么GDB不能按预期工作?

GDB设置断点后,我不确定为什么不能按预期工作:

[jalal@mumble-36] (2)$ gdb --args ./server 200000 img
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /afs/cs.wisc.edu/u/j/a/jalal/fall2013/p5-linux/server...(no …
Run Code Online (Sandbox Code Playgroud)

c gdb breakpoints

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

lambda中的alpha转换

为什么C#不支持alpha转换?

int n = 3;
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int oddNumbers = numbers.Count(n => n % 2 == 1);
Console.Out.WriteLine("N value = " + n);
Run Code Online (Sandbox Code Playgroud)

产量:

名为'n'的局部变量不能在此范围内声明,因为它会给'n'赋予不同的含义,'n'已在'父或当前'范围内用于表示其他内容

有没有我不知道的颗粒原因,因为它听起来很傻?

c# lambda programming-languages lexical-scope

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

在异步返回类型上

想知道为什么我们应该指定该async方法确实返回Task对象.

指定它似乎是多余的async关键字加上它是混乱,因为你没有真正创建Task对象.

据我所知,编译器会为Task对象创建发出必要的代码(无论是在等待调用还是用新任务包装返回).

我真的不喜欢声明类型和返回类型之间的不一致.

c# asynchronous language-design return-type

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

Monad的最佳实践

我想知道什么可以被视为关于Statemonad 的最佳实践.我也对任何其他建议持开放态度.

我有一个要解析的二进制文件.它包含需要解析的不同标头,以便能够读取整个文件.

因此,只能使用解析中的State来解析头文件.

data ParseState = ParseState {
   offset :: Int64
   buffer :: B.ByteString
   endianness :: Endianness
   pointerSize :: MachineWord
   positionStack :: [Int64]
}
Run Code Online (Sandbox Code Playgroud)

然后将该数据用于Statemonad中

type Parser a = State ParseState a
Run Code Online (Sandbox Code Playgroud)

这可以完美地解决标头的解析.但是,只要我想解析整个文件,我需要标题中的信息才能正确读取文件.

data Header = Header {
    txtOffset :: Int64,
    stringOffset :: Int64
}
Run Code Online (Sandbox Code Playgroud)

我需要标头信息来继续解析文件.

我的想法是使用一个位于前一个状态之上的新状态monad.所以我有一个新的StateT monad:

type ParserFullState a = StateT Header (State ParserState) a
Run Code Online (Sandbox Code Playgroud)

因此,我可以继续使用新的状态转换器构建一整套解析器函数.我也可以采用不同的方式将标题添加到原始ParseState数据中.

我可以看到将标题添加回ParserState以下内容的优点如下:

  1. 解析器函数的返回类型是统一的
  2. 无需调用lift来访问解析器原语.

我能看到的缺点是:

  1. 高级解析器和低级原语之间没有区别.
  2. 我们无法清楚地说明标头何时完全解析或何时不完整.从而使解析器修改更加脆弱.

你的建议是什么?我应该使用状态转换器吗?我应该将标头添加到原始状态还是其他任何情况?

谢谢.

monads haskell state-monad

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