{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-2-3 メソッドをオブジェクトに取り込む" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "ename": "NoMethodError", "evalue": "undefined method `greet_to' for #", "output_type": "error", "traceback": [ "\u001b[31mNoMethodError\u001b[0m: undefined method `greet_to' for #", "\u001b[37m(pry):8: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": [ "module Greetable\n", " def greet_to(name)\n", " puts \"Hello, #{name}. I'm a #{self.class}.\"\n", " end\n", "end\n", "\n", "o = Object.new\n", "o.greet_to 'hoge'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello, hoge. I'm a Object.\n" ] } ], "source": [ "o.extend Greetable\n", "o.greet_to 'hoge'" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello, hoge. I'm a Class.\n" ] } ], "source": [ "class Alice\n", " extend Greetable\n", "end\n", "\n", "Alice.greet_to 'hoge'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello, hoge. I'm a Module.\n" ] } ], "source": [ "module Bob\n", " extend Greetable\n", "end\n", "\n", "Bob.greet_to 'hoge'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "You must study!!!\n" ] } ], "source": [ "module Teachable\n", " def teach\n", " puts 'You must study!!!'\n", " end\n", "end\n", "\n", "class Human\n", " extend Teachable\n", "end\n", "\n", "Human.teach" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-2-4 モジュール関数" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Math.sqrt(4)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "include Math\n", "sqrt(4)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "2.302585092994046" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log(10)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Called!\n" ] } ], "source": [ "module MyFunction\n", " def mod_function\n", " puts 'Called!'\n", " end\n", " module_function :mod_function\n", "end\n", "\n", "MyFunction.mod_function" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ ":second_function" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "module MyFunction\n", " def outer_function\n", " first_function\n", " second_function\n", " end\n", " \n", " module_function\n", " \n", " def first_function\n", " puts 'first'\n", " end\n", " \n", " def second_function\n", " puts 'second'\n", " end\n", "end" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "second\n" ] } ], "source": [ "MyFunction.second_function" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "first\n", "second\n" ] } ], "source": [ "o2 = Object.new\n", "o2.extend MyFunction\n", "\n", "o2.outer_function" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "ename": "NoMethodError", "evalue": "private method `first_function' called for #", "output_type": "error", "traceback": [ "\u001b[31mNoMethodError\u001b[0m: private method `first_function' called for #", "\u001b[37m(pry):94: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": [ "# モジュール関数とはprivateなインスタンスメソッドである\n", "o2.first_function" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "ename": "NoMethodError", "evalue": "undefined method `new' for MyFunction:Module", "output_type": "error", "traceback": [ "\u001b[31mNoMethodError\u001b[0m: undefined method `new' for MyFunction:Module", "\u001b[37m(pry):95: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": [ "MyFunction.new" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4-2-5 クラスやモジュールを自動的にロードする" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"1.1.0\"" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "OpenSSL::VERSION" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "ename": "NameError", "evalue": "uninitialized constant NKF", "output_type": "error", "traceback": [ "\u001b[31mNameError\u001b[0m: uninitialized constant NKF", "\u001b[37m(pry):98: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": [ "NKF::VERSION" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "NKF" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "autoload :NKF, 'nkf'\n", "\n", "NKF" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "\"2.1.3 (2013-11-22)\"" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NKF::VERSION" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "次回は`4-3 オブジェクト`から" ] }, { "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 }