用于学习 Ruby 语法的(哈希部分)

为了像呼吸一样自然地书写Ruby语法,我写这段代码是为了反复练习那些我理解有点模糊的语法。

前提知識 tí zhī shì)

    • ハッシュは、keyとvalueの組み合わせからなるオブジェクト

 

    • JavaScriptでいう連想配列のようなもの

 

    RubyでいうハッシュのクラスはHash
val = {}
p val.class

=> Hash
    • 特徴: keyとvalueが大量に格納されている場合でも指定したkeyに対するvalueを高速で取得できます

 

    存在しないkeyを指定するとnilがかえってきます
languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages['java']

=> nil

前提知識 / 散列字面值

书写方式如下,即使最后有逗号也不会出错。
如果同一个键被多次使用,则以最后一个键为准(就像CSS一样)。
但是,在现场中最好不要使用这种写法。

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django' }
p languages

=> {"ruby"=>"rails", "php"=>"laravel", "python"=>"django"}

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages

=> {"ruby"=>"rails", "php"=>"laravel", "python"=>"django"}

添加哈希

请将新的键值对添加到之前定义的变量languages所代表的哈希表中。

返回

{"ruby"=>"rails", "php"=>"laravel", "python"=>"django", "javascript"=>"react"}

绝对正确的答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages['javascript'] = 'react'
p languages

参考:针对追求专业的个人的Ruby入门_第148页

覆盖哈希

请在上面定义的变量language中添加新的key和value对到哈希表中,并且编写代码来覆盖现有key的值。

回归

{"ruby"=>"rails", "php"=>"laravel", "python"=>"django", "javascript"=>"vue.js"}

正确答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages['javascript'] = 'react'
p languages
languages['javascript'] = 'vue.js'
p languages

参考资料: 《为追求成为专业人士而写的Ruby入门指南》第148页

使用哈希进行循环处理

使用each方法对哈希进行操作有以下特点

    • 引数を2つ用意すればkeyとvalueを取り出せる

keyとvalueのセットは格納した順番に取り出せる

使用哈希表的循环处理/第一题

请编写一个程序来实现以下所示的返回示例。

"ruby => rails"
"php => laravel"
"python => django"

正确答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }

languages.each do |k,v|
  p "#{k} => #{v}"
end

使用哈希表的循环处理 / 第二题

请写一个程序,实现以下类似的返回示例。

"[\"ruby\", \"rails\"]"
"ruby"
"rails"
"[\"php\", \"laravel\"]"
"php"
"laravel"
"[\"python\", \"django\"]"
"python"
"django"

正确答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }

languages.each do |kv|
  p "#{kv}"
  p kv[0]
  p kv[1]
end

参考:给那些希望成为专业人士的Ruby初学者的Ruby入门_149页

哈希的相等比较

请将哈希进行等值比较,并输出true。

正确答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
programming_languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages == programming_languages

=> true

参考:《Ruby入门:专为追求专业的人士设计_150页》

获取哈希表元素的数量

请编写一个程序以获取散列元素的数量。

这是正确答案。

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages.size
p languages.length

=> 3
=> 3

参考书籍:《适合追求专业的人学习的Ruby入门》150页。

删除哈希元素

删除散列元素 / 问题1

请编写一个程序,使用特定的方法删除键并实现以下示例的返回值。

{"php"=>"laravel", "python"=>"django"}

对答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages.delete('ruby')
p languages

删除哈希元素 / 问题2

在获取已经被删除元素之后的特定键时,请输出nil。

正确的答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
languages.delete('ruby')
p languages['ruby']

=> nil

刪除哈希的元素 / 第三題問題

请编写一个程序,以删除特定的键并将哈希表传递给一个代码块,返回值应证明已删除的键的值。

正确答案

languages = { 'ruby' => 'rails', 'php' => 'laravel', 'python' => 'django', }
p languages.delete('ruby') { |v| "#{v}" }

=> "rails"

参考书籍: 为追求专业成就的人准备的Ruby入门指南_150页

广告
将在 10 秒后关闭
bannerAds