为什么在Ruby中使用DBM时,db[1]=2是可以的,但print db[1]会给出错误?

为什么在Ruby中使用DBM时,db[1]=2是可以的,但print db[1]会给出错误?,ruby,variable-assignment,berkeley-db,dbm,Ruby,Variable Assignment,Berkeley Db,Dbm,在Ruby上,当使用DBM时 require "dbm" db = DBM.open("somedata") db[1] = 2 # ok p db[1] # gives error 是否有人知道db[1]=2是可以的,但打印出db[1]会给出错误 如果它要求db[“1”]是有效的,那么为什么它不适用于两种情况,而只适用于一种情况呢?dbm将键和值转换为字符串,所以: p db[“1”] 给予 “2”是,dbm仅将键存储为字符串。所以说db[1]=2实际上就是说db[“1”]=2

在Ruby上,当使用DBM时

require "dbm"

db = DBM.open("somedata")
db[1] = 2   # ok
p db[1]     # gives error
是否有人知道db[1]=2是可以的,但打印出db[1]会给出错误


如果它要求db[“1”]是有效的,那么为什么它不适用于两种情况,而只适用于一种情况呢?

dbm将键和值转换为字符串,所以:

p db[“1”]

给予


“2”

是,dbm仅将键存储为字符串。所以说db[1]=2实际上就是说db[“1”]=2。访问数据时,需要使用字符串。