Jas*_*on 1 ruby null if-statement
我正在完成codecademy练习,我无法弄清楚.nil是什么?意味着我需要实施它.这是我的代码:
movies = { GIS: 10.0, Phantasm: 1.5, Bourne: 4.0}
puts "Whats your movie brah?"
title = gets.chomp
puts "What's your rating brah?"
rating = gets.chomp
movies[title] = rating
puts "Your info was totally saved brah!"
case movies
when 'add'
puts "What movie do you want to add?"
title = gets.chomp
if movies[title.to_sym].nil?
puts "What's the rating? (Type a number 0 to 4.)"
rating = gets.chomp
movies[title.to_sym] = rating.to_i
puts "#{title} has been added with a rating of #{rating}."
else
puts "That movie already exists! Its rating is #{movies[title.to_sym]}."
end
when "update"
puts "Updated!"
when "display"
puts "Movies!"
when "delete"
puts "Deleted!"
else puts "Error!"
end
Run Code Online (Sandbox Code Playgroud)
我正在为每个命令创建方法,以"add"命令开头.然而,令我完全困惑的是,是
.nil?
Run Code Online (Sandbox Code Playgroud)
根据我的理解,nil = false
所以,我在想的是
.nil?
Run Code Online (Sandbox Code Playgroud)
询问所附声明是否错误.基于这条线的困惑的关键:
if movies[title.to_sym].nil?
Run Code Online (Sandbox Code Playgroud)
那条线问:
"如果我刚输入的标题已经在电影数组中表示为符号,那么这个声明是假的吗?"
在这种情况下,我想如果标题不存在,if语句将评估为true,如果标题已存在则为false.如果电影确实是新的,那么最后,只需要询问相关的信息
else
Run Code Online (Sandbox Code Playgroud)
声明.如果有人能帮助澄清我的误解,我将非常感激!
.nil?询问您发送nil?消息的对象实际上是否是实例nil.
'a string'.nil? #=> false
nil.nil? #=> true
x = 'a string'
x.nil? #=> false
x = nil
x.nil? #=> true
Run Code Online (Sandbox Code Playgroud)
您对if movies[title.to_sym].nil?条件工作原理的理解基本正确.默认情况下,如果值不在散列中,则散列将返回nil.
movies = { GIS: 10.0, Phantasm: 1.5, Bourne: 4.0 }
# Ignoring the user input
title = 'Bourne'
movies[title.to_sym].nil?
#=> movies["Bourne".to_sym].nil?
#=> movies[:Bourne].nil?
#=> 4.0.nil?
#=> false
movies[:NoSuchMovie].nil?
#=> nil.nil?
#=> true
Run Code Online (Sandbox Code Playgroud)