Rubyでfalseやnil等をempty?やblank?等で判定してみる
RailsでHello, world!を表示してみる
の続き
Rubyでfalseやnil等をempty?やblank?等で判定してみる。
試してみること
以下の値を
・false
・nil
・0
・0.0
・""
・" "
・"0"
・[]
・{}
以下のメソッドで真になるのか偽になるのか確認する。
・not
・.nil?
・.empty?
・.zero?
・.blank?
.blank? はRailsの拡張メソッドであり、Rubyの標準メソッドではないみたい
ソース
$ vi app/controllers/sample_controller.rb
class SampleController < ApplicationController def index pattern = { 'false' => false, 'nil' => nil, '0' => 0, '0.0' => 0.0, '""' => "", '" "' => " ", '"0"' => "0", '[]' => [], '{}' => {}, } results = [] pattern.each do |key, val| result = {} result[:val] = key result[:class] = val.class result['not val'] = (not val) ? 'O' : 'X' result['val.nil?'] = (val.nil?) ? 'O' : 'X' result['val.empty?'] = (val.respond_to?('empty?')) ? ((val.empty?) ? 'O' : 'X') : '-' result['val.zero?'] = (val.respond_to?('zero?')) ? ((val.zero?) ? 'O' : 'X') : '-' result['val.blank?'] = (val.blank?) ? 'O' : 'X' results.push result end @results = results end end
$ vi app/views/sample/index.html.erb
<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet"> <table class="table table-striped"> <tr> <th>val</th> <th>クラス</th> <th>not val</th> <th>val.nil?</th> <th>val.empty?</th> <th>val.zero?</th> <th>val.blank?</th> </tr> <% @results.each do |result| %> <tr> <td><%= result[:val] %></td> <td><%= result[:class] %></td> <td><%= result['not val'] %></td> <td><%= result['val.nil?'] %></td> <td><%= result['val.empty?'] %></td> <td><%= result['val.zero?'] %></td> <td><%= result['val.blank?'] %></td> </tr> <% end %> </table>