在Ruby中向Hash添加几个项目

时间:2013-06-15 01:35:52

标签: ruby hash push

我是一个红宝石初学者,我要创建自己的控制台 - 推特,每当用户发推文时,应用程序都会以散列方式存储推文。

最初,我能够使用

成功完成此操作
timeline = []

puts "Write your tweet"

newTweet = gets.chomp

date =DateTime.now.strftime("%d/%m/%Y %H%:%M")

@timeline << { :timestamp => date , :tweet => newTweet  }

然而我被告知使用=&gt;我正在使用旧的红宝石标准,所以我想通过使用以下代码来增强它:

@timeline << { timestamp: date , tweet: newTweet  }

不幸的是,我收到了以下代码行的错误消息:语法错误,意外':',期待'='

此外,我对如何申报变量时间轴

表示怀疑
@timeline = []
@timeline = {}
@timeline = Hash.new

非常感谢提前。

1 个答案:

答案 0 :(得分:2)

针对Ruby的版本1.9.x引入了哈希的冒号表示法。如果新语法出错,则可能是1.8.7版本。

哈希用大括号括起来({})。 数组用方括号括起来([])。

您可以通过几种不同的方式创建新哈希。两者都很好:

my_hash1 = Hash.new
my_hash2 = {}

您可以通过几种不同的方式创建新数组:

my_array1 = Array.new
my_array2 = []

在您的示例中,您有一个哈希数组。看起来像(使用备用的新语法):

timeline = [ {timestamp: tweet_date, tweet: tweet_text}, {...}, ..., {...} ]

或使用原始语法:

timeline = [ {:timestamp => tweet_date, :tweet => tweet_text}, {...}, ..., {...} ]

原始语法与备用语法没有任何问题。它与更高版本的Ruby向前兼容。它只是更冗长一点。

因此,要将timeline用作散列数组,首先是一个数组,并将其创建,例如timeline = []。然后你可以通过以下方式加载哈希元素:

timeline << { timestamp: tweet_date, tweet: tweet_text }