我可以在C++中轻松地做到这一点(注意:我没有测试它的正确性 - 它只是为了说明我正在尝试做什么):
const int BadParam = -1;
const int Success = 0;
int MyFunc(int param)
{
if(param < 0)
{
return BadParam;
}
//normal processing
return Success;
}
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何在F#早期退出例行程序.我想要做的是在输入错误时退出该功能,但如果输入正常则继续.我错过了F#的一些基本属性,还是因为我刚刚学习FP而以错误的方式解决问题?是failwith我在这里唯一的选择?
这是我到目前为止所得到的,它编译好了:
#light
module test1
(* Define how many arguments we're expecting *)
let maxArgs = 2;;
(* The indices of the various arguments on the command line *)
type ProgArguments =
| SearchString = 0
| FileSpec = 1;;
(* Various errorlevels which the app can return and …Run Code Online (Sandbox Code Playgroud) 我知道要使用的calloc请求内存,在所有位上写0,然后返回指向它的指针.
我的问题是:如果我使用包含指针的结构的calloc,那些指针会有NULL值还是我必须将它们设置为指向NULL?
struct a{
char * name;
void * p;
}* A;
Run Code Online (Sandbox Code Playgroud)
所以基本上,在我使用带有struct a的calloc之后,name和p会指向NULL吗?
谢谢!
我对OCaml中的接口与签名有点困惑.根据我的阅读,接口(.mli文件)管理其他程序可以使用/调用的值.签名文件看起来完全相同,除了它们命名,因此您可以创建不同的接口实现.例如,如果我想创建一个类似于Java中的集合的模块:
我有这样的事情:
set.mli文件:
type 'a set
val is_empty : 'a set -> bool
val ....
etc.
Run Code Online (Sandbox Code Playgroud)
签名文件(setType.ml)
module type Set = sig
type 'a set
val is_empty : 'a set -> bool
val ...
etc.
end
Run Code Online (Sandbox Code Playgroud)
然后一个实现将是另一个.ml文件,例如SpecialSet.ml,它包含一个定义所有值及其作用的结构.
module SpecialSet : Set
struct
...
Run Code Online (Sandbox Code Playgroud)
关于"签名"究竟是什么以及它的用途是什么,我有点困惑.它不是一种界面吗?为什么需要.mli和.ml?我看到的行的唯一区别是它命名模块.
我误解了这个,还是还有其他事情发生在这里?
我正在尝试从以下数据创建结构图:
mydf <- data.frame ( group = rep (1:5, each = 20), z = rnorm (20, 10, 1),
x = c(rnorm (20, 2, 0.5), rnorm (20, 2, 0.5),
rnorm (20, 9, 0.5), rnorm (20, 9, 0.5),rnorm (20, 5, 0.5)),
y = c(rnorm (20, 2, 0.5), rnorm (20, 9, 0.5), rnorm (20, 2, 0.5),
rnorm (20, 9, 0.5), rnorm (20, 2, 0.5)))
means <- aggregate(. ~ group, data = mydf, mean)
gmx <-mean (mydf$x)
gmy <- mean (mydf$y)
library(ggplot2)
ggplot(mydf, aes(x, …Run Code Online (Sandbox Code Playgroud) 是否允许在同一项目中的2个不同c文件中使用具有不同定义的相同名称结构.例如.
FILE1.C
typedef struct
{
unsigned int unVar;
} abc;
Run Code Online (Sandbox Code Playgroud)
file2.c中
typedef struct
{
int var;
} abc;
Run Code Online (Sandbox Code Playgroud)
两个文件中都使用了abc.当我将这些文件编译为同一项目的一部分时,没有错误,但我想了解这是否正确用法.
我必须上课,ClassA和ClassB以及"多对多"的AssociationClass.我想使用一个结构来保存A和B之间的关联,例如我可以知道,对于A或B的每个实例,它们是它们的对应物.
我想过使用带有对键的Hashmap:
Hasmap<Pair<ClassA, ClassB>, AssociationClass> associations;
Run Code Online (Sandbox Code Playgroud)
这样,我可以添加和删除ClassA和ClassB的两个实例之间的关联,并且我可以查询两个给定实例的关系.
但是,我错过了为ClassA或ClassB的给定实例定义所有关联的功能.
我可以通过暴力破解并遍历地图的所有键来搜索给定实例之间的关联,但这是低效且不优雅的.
你知道任何数据结构/免费库可以实现吗?我不想重新发明轮子.
在此先感谢您的帮助,
拉斐尔
注意:这不是一个"数据库"问题.这些对象是用于实时计算的纯POJO,我不需要持久化的东西.
有人可以帮我把这个嵌套结构变成一个LINQ语句吗?
EventLog[] logs = EventLog.GetEventLogs();
for (int i = 0; i < logs.Length; i++)
{
if (logs[i].LogDisplayName.Equals("AAA"))
{
for (int j = 0; j < logs[i].Entries.Count; j++)
{
if (logs[i].Entries[j].Source.Equals("BBB"))
{
remoteAccessLogs.Add(logs[i].Entries[j]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想知道在C#中是否有任何结构可以包含超过Int.MaxValue的限制2,147,483,647项,如果有非常大的信息集.这是否必须使用多级数组?或者你可以创建一个最大长度为Long.MaxValue的数组吗?如果是这样,怎么样?
任何人都可以告诉我如何将字符串内容转换为X509结构.我正在使用openssl来读取X509结构.
示例:证书字符串
-----BEGIN CERTIFICATE-----
MIIExDCCA6ygAwIBAgIJAK0JmDc/YXWsMA0GCSqGSIb3DQEBBQUAMIGcMQswCQYD
VQQGEwJJTjELMAkGA1UECBMCQVAxDDAKBgNVBAcTA0hZRDEZMBcGA1UEChMQUm9j
a3dlbGwgY29sbGluczEcMBoGA1UECxMTSW5kaWEgRGVzaWduIENlbnRlcjEOMAwG
A1UEAxMFSU1BQ1MxKTAnBgkqhkiG9w0BCQEWGmJyYWphbkBSb2Nrd2VsbGNvbGxp
bnMuY29tMB4XDTExMDYxNjE0MTQyM1oXDTEyMDYxNTE0MTQyM1owgZwxCzAJBgNV
BAYTAklOMQswCQYDVQQIEwJBUDEMMAoGA1UEBxMDSFlEMRkwFwYDVQQKExBSb2Nr
d2VsbCBjb2xsaW5zMRwwGgYDVQQLExNJbmRpYSBEZXNpZ24gQ2VudGVyMQ4wDAYD
VQQDEwVJTUFDUzEpMCcGCSqGSIb3DQEJARYaYnJhamFuQFJvY2t3ZWxsY29sbGlu
cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDfjHgUAsbXQFkF
hqv8OTHSzuj+8SKGh49wth3UcH9Nk/YOug7ZvI+tnOcrCZdeG2Ot8Y19Wusf59Y7
q61jSbDWt+7u7P0ylWWcQfCE9IHSiJIaKAklMu2qGB8bFSPqDyVJuWSwcSXEb9C2
xJsabfgJr6mpfWjCOKd58wFprf0RF58pWHyBqBOiZ2U20PKhq8gPJo/pEpcnXTY0
x8bw8LZ3SrrIQZ5WntFKdB7McFKG9yFfEhUamTKOffQ2Y+SDEGVDj3eshF6+Fxgj
8plyg3tZPRLSHh5DR42HTc/35LA52BvjRMWYzrs4nf67gf652pgHh0tFMNMTMgZD
rpTkyts9AgMBAAGjggEFMIIBATAdBgNVHQ4EFgQUG0cLBjouoJPM8dQzKUQCZYNY
y8AwgdEGA1UdIwSByTCBxoAUG0cLBjouoJPM8dQzKUQCZYNYy8ChgaKkgZ8wgZwx
CzAJBgNVBAYTAklOMQswCQYDVQQIEwJBUDEMMAoGA1UEBxMDSFlEMRkwFwYDVQQK
ExBSb2Nrd2VsbCBjb2xsaW5zMRwwGgYDVQQLExNJbmRpYSBEZXNpZ24gQ2VudGVy
MQ4wDAYDVQQDEwVJTUFDUzEpMCcGCSqGSIb3DQEJARYaYnJhamFuQFJvY2t3ZWxs
Y29sbGlucy5jb22CCQCtCZg3P2F1rDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEB
BQUAA4IBAQCyYZxEzn7203no9TdhtKDWOFRwzYvY2kZppQ/EpzF+pzh8LdBOebr+
DLRXNh2NIFaEVV0brpQTI4eh6b5j7QyF2UmA6+44zmku9LzS9DQVKGLhIleB436K
ARoWRqxlEK7TF3TauQfaalGH88ZWoDjqqEP/5oWeQ6pr/RChkCHkBSgq6FfGGSLd
ktgFcF0S9U7Ybii/MD+tWMImK8EE3GGgs876yqX/DDhyfW8DfnNZyl35VF/80j/s
0Lj3F7Po1zsaRbQlhOK5rzRVQA2qnsa4IcQBuYqBWiB6XojPgu9PpRSL7ure7sj6
gRQT0OIU5vXzsmhjqKoZ+dBlh1FpSOX2
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
这个证书我将作为字符串输入获取.如何将其转换为X509.
我花了很多时间来寻找解决方案,但仍然没有找到它.
我有2个班:
[StructLayout(LayoutKind.Sequential)]
public class Result
{
public int Number;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string Name;
public int Size;
}
[StructLayout(LayoutKind.Sequential)]
public class CoverObject
{
public int NumOfResults;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 4)]
public Result[] Results;
}
Run Code Online (Sandbox Code Playgroud)
我期望命令Marshal.SizeOf(typeof(CoverObject))将返回52,但不是,它只是20.因此,我后来使用的所有编组和解组都不起作用.
看起来它只计算Result类中的第一个成员(Number).我做错了什么吗?
structure ×10
c# ×3
c ×2
.net ×1
arrays ×1
associations ×1
c++ ×1
calloc ×1
f# ×1
ggplot2 ×1
hashmap ×1
idioms ×1
interface ×1
iteration ×1
java ×1
linq ×1
many-to-many ×1
marshalling ×1
module ×1
null ×1
ocaml ×1
openssl ×1
pointers ×1
r ×1
scatter-plot ×1
signature ×1
string ×1
syntax ×1
typedef ×1