以前,当我需要存储一些相关的variables时,我会创build一个类。 function Item(id, speaker, country) { this.id = id; this.speaker = spkr; this.country = country; } var myItems = [ new Item(1, 'john', 'au'), new Item(2, 'mary', 'us') ]; 但我想知道这是否是一个好的做法。 有没有其他更好的方法来模拟Javascript中的结构?
我需要从mongo数据库中获取项目,所以我定义了一个像这样的结构 type Page struct { PageId string `bson:"pageId"` Meta map[string]interface{} `bson:"meta"` } 现在我也需要将其编码为JSON,但它将字段编码为大写(我得到PageId而不是pageId),所以我还需要为JSON定义字段标记。 我尝试了这样的事情,但没有奏效: type Page struct { PageId string `bson:"pageId",json:"pageId"` Meta map[string]interface{} `bson:"meta",json:"pageId"` } 那么如何做到这一点,在结构中定义多个名称标签呢?
我在C中发现了一个奇特的行为。考虑下面的代码: struct s { int a; }; struct z { int a; struct sb[]; }; int main(void) { return 0; } 它编译得很好。 然后像这样改变struct z成员的顺序 struct z { struct sb[]; int a; }; 突然之间,我们得到的编译错误field has incomplete type 'struct s []' 。 这是为什么?
可能重复: 为什么GCC不优化结构? 为什么C ++不使结构更紧密? 考虑在32位x86机器上的以下示例: 由于alignment约束,下面的结构 struct s1 { char a; int b; char c; char d; char e; } 可以更有效地代表内存(12比8字节),如果成员被重新sorting的话 struct s2 { int b; char a; char c; char d; char e; } 我知道C / C ++编译器不允许这样做。 我的问题是为什么语言是这样devise的。 毕竟,我们最终可能会浪费大量的内存, struct_ref->b引用不会关心这个区别。 编辑 :谢谢大家的非常有用的答案。 你很好地解释了为什么重新安排因为devise语言的方式而不起作用。 但是,这让我想:如果重新安排是语言的一部分,这些论据是否仍然会成立? 假设有一些特定的重排规则,我们至less要求这样做 我们应该只在实际需要时重新组织结构(如果结构已经“紧”,不要做任何事情) 该规则仅查看结构的定义,而不是内部结构。 这确保了一个结构types具有相同的布局,而不pipe它是否在另一个结构中是内部的 给定结构的编译内存布局是可预测的,因为它的定义(即规则是固定的) 我一个接一个地说我的理由: 低级数据映射,“最不可思议的元素” :只要你自己写一个简洁的结构(比如@Perry的答案),没有什么变化(需求1)。 如果出于某种奇怪的原因,您希望内部填充在那里,您可以使用虚拟variables手动插入它,和/或可能有关键字/指令。 […]
我一直在使用PHP多年,并对这门语言有了很好的把握,创造出了许多先进的和不太先进的系统,这些系统运行良好。 我遇到的问题是,只有当我发现我以前从未学过的东西需要的时候,才会学习。 这使我查找解决scheme和其他代码来处理这个问题,所以我将学习一个我以前从未见过的新function或结构。 正是通过这种方式,我学到了许多更好的技术(例如亚马逊,谷歌或其他大公司的学习课程)。 这个问题的主要问题是如果你不知道它存在,就不能学习。 例如,我花了好几个月的时间来学习empty()函数,我只是使用strlen()来检查string长度来检查空值。 我现在正在build立越来越大的系统,我已经开始阅读highscalability.com之类的博客,并且正在研究MySQL复制和服务器数据以进行扩展。 我知道你的代码结构对于使整个系统工作非常重要。 在阅读了最近关于reddit结构的博客之后,这让我质疑是否有一些标准或“接受的系统”。 我研究过框架(我曾经使用过Kohana,我后悔了,但是决定PHP框架不适合我),我更喜欢我自己的函数库,而不是框架。 我目前的结构是WordPress,Kohana和我自己的知识之间的混合。 我能看到的潜在好处是: 阅读博客 阅读教程 和其他人一起工作 读一本书 作为一个非常优秀的系统开发人员来说,“达到一个新的水平”的最好方法是什么?
Fabric遇到麻烦,无法识别~/.ssh/config主机。 我的fabfile.py如下所示: from fabric.api import run, env env.hosts = ['lulu'] def whoami(): run('whoami') 运行$ fab whoami给出: [lulu]跑步:whoami 致命错误:lulu名称查找失败 lulu的名字在我的~/.ssh/config ,就像这样: Host lulu hostname 192.168.100.100 port 2100 IdentityFile ~/.ssh/lulu-key 我首先想到解决这个问题是添加类似lulu.lulu到/etc/hosts (我在Mac上),但是我还必须将身份文件传递到Fabric – 我宁愿保留我的身份validation(即~/.ssh/config )与我的部署分开(即fabfile.py )。 顺便说一句,如果你尝试连接到主机文件中的主机, fabric.contrib.projects.rsync_project似乎没有确认fabric.contrib.projects.rsync_project中的“端口”(即如果你使用hosts.env = [lulu:2100]调用rsync_project似乎尝试连接到lulu:21 )。 Fabric有没有理由不承认这个lulu名字?
在NSArray存储c结构的常用方法是什么? 内存处理的优点,缺点? 值得注意的是, valueWithBytes和valueWithPointer什么区别 – 由下面的justin和catfish引发。 下面是苹果公司关于valueWithBytes:objCType:的讨论的链接 valueWithBytes:objCType:面向未来的读者 对于一些横向思考和更多的performance,Evgen提出了在C ++中使用STL::vector的问题。 (这提出了一个有趣的问题:是否有一个快速的C库,与STL::vector不同,但是要轻得多,可以对数组进行最小的“整齐处理”…) 所以原来的问题… 例如: typedef struct _Megapoint { float w,x,y,z; } Megapoint; 那么,在NSArray如何存储自己的结构的正常,最好,惯用的方法是什么,以及如何处理这个习惯用法中的记忆? 请注意,我特意寻找常用的习惯来存储结构。 当然,可以通过做一个新的小class来避免这个问题。 不过,我想知道如何将数组结构放入数组中,谢谢。 顺便说一句,这可能是NSData方法吗? 不是最好的… Megapoint p; NSArray *a = [NSArray arrayWithObjects: [NSData dataWithBytes:&p length:sizeof(Megapoint)], [NSData dataWithBytes:&p length:sizeof(Megapoint)], [NSData dataWithBytes:&p length:sizeof(Megapoint)], nil]; 顺便说一句,作为一个参考点,并感谢Jarret Hardie,以下是如何在NSArray存储CGPoints和类似: NSArray *points = [NSArray arrayWithObjects: [NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)], [NSValue […]
有没有人知道答案和/或有一个看法呢? 由于元组通常不会很大,所以我认为使用结构比类更有意义。 什么说你?
我知道在C中,我们不能从函数返回一个数组,而是一个指向数组的指针。 但是我想知道structs的特殊之处是什么使得它们可以通过函数返回,即使它们可能包含数组。 为什么struct包装使下面的程序有效? #include <stdio.h> struct data { char buf[256]; }; struct data Foo(const char *buf); int main(void) { struct data obj; obj = Foo("This is a sentence."); printf("%s\n", obj.buf); return 0; } struct data Foo(const char *buf) { struct data X; strcpy(X.buf, buf); return X; }
我正在窥探我的MSP430微控制器的头文件,并在<setjmp.h>遇到了这个问题: /* r3 does not have to be saved */ typedef struct { uint32_t __j_pc; /* return address */ uint32_t __j_sp; /* r1 stack pointer */ uint32_t __j_sr; /* r2 status register */ uint32_t __j_r4; uint32_t __j_r5; uint32_t __j_r6; uint32_t __j_r7; uint32_t __j_r8; uint32_t __j_r9; uint32_t __j_r10; uint32_t __j_r11; } jmp_buf[1]; /* size = 20 […]