1

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

「add」コマンドから始まる各コマンドのメソッドを作成しています。しかし、私を完全に混乱させているのは、

.nil?

私が理解していることから、 nil = false

そこで、私が考えているのは、

.nil?

添付の陳述が虚偽であるかどうかを尋ねています。行に基づく私の混乱の核心:

if movies[title.to_sym].nil?

その行は尋ねていますか:

「入力したばかりのタイトルがすでに映画の配列でシンボルとして表されている場合、このステートメントは偽でしょうか?」

その場合、if ステートメントは、タイトルが存在しない場合は true に評価され、タイトルが既に存在する場合は false に評価されると思います。映画が本当に新しい場合は、最後に、

else

声明。誰かが私の誤解を明確にするのを手伝ってくれたら、とても感謝しています!

4

1 に答える 1

6

.nil?nil?は、メッセージの送信先のオブジェクトが実際に のインスタンスであるかどうかを尋ねていますnil

'a string'.nil? #=> false
nil.nil?        #=> true

x = 'a string'
x.nil?          #=> false

x = nil
x.nil?          #=> true

条件がどのように機能するかについてのあなたの理解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
于 2013-05-10T19:12:12.610 に答える