我是一个红宝石初学者,我要创建自己的控制台 - 推特,每当用户发推文时,应用程序都会以散列方式存储推文。
最初,我能够使用
成功完成此操作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
非常感谢提前。
答案 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 }