小编Mag*_* G.的帖子

与歧视联盟的主动模式匹配

有没有办法使用以下形式的区别联合与活动模式匹配?我找不到任何例子.

这就是我想要做的:

type c = a | b

type foo =
  | bar1
  | bar2 of c

//allowed
let (|MatchFoo1|_|) aString =
  match aString with
  | "abcd" -> Some bar1
  | _ -> None

//not allowed
let (|MatchFoo2|_|) aString =
  match aString with
  | "abcd" -> Some (bar2 of a)
  | _ -> None
Run Code Online (Sandbox Code Playgroud)

为什么"Some"不能以第二种方式使用?还有另一种方法可以达到同样的目的吗?

f# pattern-matching discriminated-union active-pattern

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

如何在程序的入口点知道ARM或Thumb模式

我正在写一个ARMv7反汇编程序.在ARM参考手册中清楚地描述了在ARM和Thumb模式之间切换的方法,但是您如何知道程序的起始模式?

我使用Xcode默认编译为拇指,所以我知道我自己的所有程序都将在Thumb中启动,除非我强制编译为ARM模式.但是,我希望能够获取一个任意的mach-o可执行文件,并在代码的开头找出指令集模式.

mach-o标题中是否有某个地方指定入口点处的指令集?

assembly arm mach-o disassembly thumb

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

在施工期间从自身内部引用记录

我试图在同一个构造函数中创建一个记录,该记录使用之前定义的字段之一来计算另一个字段的值.例如

myRecordType = {Foo:int; Bar:int[]}

myRecord = {Foo = 5;
            Bar = Array.init Foo (fun i -> i)}
Run Code Online (Sandbox Code Playgroud)

当我尝试这个时,它不会识别Foo已存在.我也不能参考Foo使用myRecord.Foo,但这是有道理的,因为myRecord尚未构建.但是我会想到Foo并且Bar会在相同的范围内,所以Bar可以访问Foo,但显然不是.

Bar数组的大小取决于数值Foo,那么如何设置这种格式的记录呢?

f# record

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

指针赋值"*foo ++ =*bar ++;"在C中做了什么?

我确信之前已经多次询问过这种情况,但这种事情很难找到.
假设foo和bar都是指向独立数组的指针,这行是做什么的?

*foo++ = *bar++;
Run Code Online (Sandbox Code Playgroud)

每个指针在什么时候递增,它是指针或值的赋值?
谢谢

c pointers

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