2016-11-11 3 views
4
def add 
    puts "\nAdd a restaurant\n\n".upcase 
    restaurant = Restaurant.new 

    print "Restaurant name: " 
    restaurant.name = gets.chomp.strip 

    if restaurant.save 
     puts "\nRestaurant Added\n\n" 
    else 
     puts "\nSave Error: Restaurant not added\n\n" 
    end 
    end 

    def save 
    return false unless Restaurant.file_usable? 
    File.open(@@filepath, 'a') do |file| 
     file.puts "#{[@name, @cuisine, @price].join("\t")}\n" 
    end 
    return true 
    end 

私はチュートリアルからRubyでコーディングする方法を学んでいます。メソッドaddは新しいインスタンスを作成し、それをファイルに保存します(メソッドsaveを使用)。条件付きifでは、直接呼び出されなかったと考えられるので、saveがどのように呼び出されたかを知りたいと思います。メソッドの真実性をチェックすることは、それを条件文(if)でも実行しますか?

if条件内にメソッドを配置し、そのステートメントの戻り値の「真実性」をチェックしている演算子(=、==など)を使用しないとわかります。しかし条件付きでメソッドを実行してもそれを実行しますか?そうでない場合は、上記の例のためにメソッドsaveがどのように呼び出されますか?

+1

メソッドが呼び出されなかった場合、 'if'ステートメントはその条件の正当性をどのように評価しますか? –

答えて

3

確かに、そのメソッドが呼び出され、その戻り値がif条件として使用されます。

説明するだけ:nilfalseは偽の値です。他の値はtruthyとみなされます。

1

nilパラメータを使用して例外を発生させるメソッドの正当性を評価する必要があることがあります。この場合

if !parameter.nil? && method_which_needs_a_non_nil_parameter(parameter) then 
    do_something 
end 

、およびパラメータがnilであれば、method_which_needs_a_non_nil_parameterは全く呼び出されません。例外を回避するために 一つの可能​​性はあります。

関連する問題