我没有太多编程经验.但是,在我看来,Struct似乎有点像Hash.
- Struct能做好什么?
- Struct能做什么,Hash不能做什么?
在谷歌搜索之后,Struct的概念在C中很重要,但我对C知之甚少.
我没有太多编程经验.但是,在我看来,Struct似乎有点像Hash.
在谷歌搜索之后,Struct的概念在C中很重要,但我对C知之甚少.
struct 与使用hashmaps的不同之处在于(除了代码的外观):
Struct.new(:x).new(42) == Struct.new(:x).new(42)
为假,而Foo = Struct.new(:x); Foo.new(42)==Foo.new(42)
为真),不同 struct 的两个实例也永远不会相等.to_a
方法返回一个值数组,而hash上的to_a
则返回一个键值对数组(其中"pair"表示"两元素数组")Foo = Struct.new(:x, :y, :z)
,您可以执行Foo.new(1,2,3)
来创建Foo
的实例,而不必拼写属性名称.所以要回答这个问题:当你想用一组已知的属性为对象建模时,使用structs.当你想为任意的人建模时,使用hashmaps(例如,计算每个单词在字符串中出现的频率,或将昵称映射到全名等)绝对不是 struct 体的工作,而用名字、年龄和地址为人建模是Person = Struct.new(name, age, address)
的完美 Select .
作为旁注:C struct 与ruby struct 几乎没有任何关系,所以不要让自己被这搞糊涂了.