{ "metadata": { "language": "ruby", "name": "", "signature": "sha256:f5253675e0a7dc7dc0899e458dd3a4d16cd6c49b885aee85d78351e08618d089" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Kawasaki.rb 018 \u30d1\u30fc\u30d5\u30a7\u30af\u30c8Ruby\u8aad\u66f8\u4f1a\n", "## 3-5-8 \u30d6\u30ed\u30c3\u30af" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%w(kawasaki yokohama shibuya).each do |name|\n", " puts \"#{name}.rb\"\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "kawasaki.rb\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "yokohama.rb\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "shibuya.rb\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "[\"kawasaki\", \"yokohama\", \"shibuya\"]" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### yield" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def block_sample\n", " puts 'stand up'\n", " yield\n", " puts 'sit down'\n", "end\n", "\n", "block_sample do\n", " puts 'walk'\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "stand up\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "walk\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "sit down\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "block_sample" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "stand up\n" ] }, { "ename": "LocalJumpError", "evalue": "no block given (yield)", "output_type": "pyerr", "traceback": [ "\u001b[31mLocalJumpError\u001b[0m: no block given (yield)", "\u001b[37m(pry):6:in `block_sample'\u001b[0m", "\u001b[37m(pry):13:in `
'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:355:in `evaluate_ruby'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:323:in `handle_line'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.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.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.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.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/backend.rb:28:in `eval'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/kernel.rb:110:in `execute_request'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/kernel.rb:62:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/command.rb:30:in `run_kernel'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/lib/iruby/command.rb:16:in `run'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/iruby-0.1.13/bin/iruby:6:in `'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/bin/iruby:23:in `load'\u001b[0m", "\u001b[37m/Users/mic/.rbenv/versions/2.1.0/bin/iruby:23:in `
'\u001b[0m" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "def block_sample\n", " puts 'stand up'\n", " \n", " yield if block_given?\n", " \n", " puts 'sit down'\n", "end\n", "\n", "block_sample" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "stand up\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "sit down\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "block_sample do\n", " puts 'hoge'\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "stand up\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "hoge\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "sit down\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### \u30d6\u30ed\u30c3\u30af\u306e\u623b\u308a\u5024\u30fb\u5f15\u6570\n", "`next`\u306f `yield`\u306b\u5024\u3092\u8fd4\u3059\u306e\u3067`42`\u304c`puts`\u3055\u308c\u308b" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def display_value\n", " puts yield\n", "end\n", "\n", "display_value do\n", " next 42\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "42\n" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`break` \u306f `yield` \u306b\u5165\u3063\u3066\u3059\u3050\u5b9f\u884c\u3055\u308c\u308b\u306e\u3067\u3001 `puts` \u306f\u3055\u308c\u305a\u3001`display_value` \u306e\u8fd4\u308a\u5024\u304c`42`\u306b\u306a\u308b" ] }, { "cell_type": "code", "collapsed": false, "input": [ "i = display_value do\n", " break 42\n", "end" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "42" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "puts \"#{i}\u3067\u3059\u3088\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "42\u3067\u3059\u3088\n" ] } ], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u6b21\u56de\u3001P.98\u4e2d\u6bb5\u3088\u308a" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }