2

我是一名 ruby​​ 初学者,我将创建自己的控制台推特,每当用户发推文时,应用程序都会将推文存储在哈希中。

最初我能够通过使用成功地做到这一点

timeline = []

puts "Write your tweet"

newTweet = gets.chomp

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

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

但是有人告诉我,通过使用 => 我正在使用旧的 ruby​​ 标准,所以我想通过使用以下代码来增强它:

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

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

另外我对如何声明变量时间线有疑问

@timeline = []
@timeline = {}
@timeline = Hash.new

提前谢谢了。

4

1 回答 1

3

哈希的冒号表示法是在 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 }
于 2013-06-15T01:46:47.150 回答