哈希表是一种可以将键映射到值的数据结构。给定一个键,哈希函数将计算然后告诉我们存储该值的槽/桶的索引。如果多个键映射到同一个槽,它可能从这个槽开始一个链表。如果值没有足够的槽位,它将执行调整大小操作以找到更大的空间。
{:name => "Wix", :age => 18}像哈希表这样的哈希对象算不算哈希表?如果是这样,我需要问题 2 的答案。我有一个简单的sinatra应用程序使用yaml文件来处理数据.其中一个特点是User可以投票或否决Question.投票功能很好,但在实施否决功能时我遇到了一些奇怪的事情.
简单地说:
votes_count为正(>= 1)时,数字将正确减少votes_count值为零或负数时,该数字将在data散列中成功减少,但在转储data哈希进入yaml文件后,负数变为正数.这是yaml文件Question:
'1': !ruby/hash:Sinatra::IndifferentHash
title: " Best way to require all files from a directory in ruby?"
description: What's the best way to require all files from a directory in ruby ?
user_id: '3'
votes_count: 0
# other user information
Run Code Online (Sandbox Code Playgroud)
这是与否决权功能相关的路由处理程序:
post "/questions/:id/veto" do
check_vote_validity_for_question(params[:id])
@question = Question.find_by(:id, params[:id])
@question.votes_count = (@question.votes_count.to_i - 1)
Question.update(params[:id], votes_count: @question.votes_count )
# omit …Run Code Online (Sandbox Code Playgroud)