{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 4-1-3 インスタンス変数へのアクセス" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nil\n", "30\n", "30\n" ] }, { "data": { "text/plain": [ "30" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Ruler\n", " attr_accessor :length\n", "end\n", "\n", "class Ruler2\n", " def length=(length)\n", " @length = length\n", " end\n", " \n", " def length\n", " @length\n", " end\n", "end\n", " \n", "ruler = Ruler.new\n", "p ruler.length\n", "p ruler.length = 30\n", "p ruler.length" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "nil\n", "30\n", "30\n" ] }, { "data": { "text/plain": [ "30" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ruler2 = Ruler2.new\n", "p ruler2.length\n", "p ruler2.length = 30\n", "p ruler2.length" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "ename": "NameError", "evalue": "invalid attribute name `foo?'", "output_type": "error", "traceback": [ "\u001b[31mNameError\u001b[0m: invalid attribute name `foo?'", "\u001b[37m(pry):56:in `attr_accessor'\u001b[0m", "\u001b[37m(pry):56:in `'\u001b[0m", "\u001b[37m(pry):55:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "class Hoge\n", " attr_accessor :foo?\n", "end" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class Rectangle\n", " attr_accessor :width, :heght\n", "end\n", "\n", "# 上と同じ\n", "class Rectangle2\n", " attr_reader :width, :heght\n", " attr_writer :width, :heght\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 4-1-4 クラスメソッド" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[#, #]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Ruler\n", " attr_accessor :length\n", " \n", " def self.pair\n", " [self.new, self.new]\n", " end\n", "end\n", "\n", "Ruler.pair" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[#, #]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Ruler\n", " attr_accessor :length\n", " \n", " def double_length\n", " length * 2\n", " end\n", " private :double_length\n", " \n", " class << self\n", " def pair\n", " [new, new]\n", " end\n", " \n", " def trie\n", " [new, new, new]\n", " end\n", " end\n", "end\n", "\n", "Ruler.pair" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NoMethodError", "evalue": "private method `double_length' called for #", "output_type": "error", "traceback": [ "\u001b[31mNoMethodError\u001b[0m: private method `double_length' called for #", "\u001b[37m(pry):127:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:65:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/backend.rb:12:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:87:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:47:in `dispatch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/kernel.rb:37:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:70:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/lib/iruby/command.rb:34:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/iruby-0.2.7/bin/iruby:5:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.2.2/bin/iruby:23:in `
'\u001b[0m" ] } ], "source": [ "ruler = Ruler.new\n", "ruler.double_length" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.2.2", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": "rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.2.2" } }, "nbformat": 4, "nbformat_minor": 0 }