Início
Conheça mais
Enviar pesquisa
Carregar
Entrar
Cadastre-se
Anúncio
Check these out next
Ruby 初級者向けレッスン 49回───クラス
higaki
Ruby初級者向けレッスン 48回 ─── Array と Hash
higaki
Ruby初級者向けレッスン 47回 ─── 文字列
higaki
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
ジュンク堂書店の方から来ました
higaki
Ruby初級者向けレッスン 45回 ─── 例外
higaki
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
Kazumi IWANAGA
開発環境向けEKSのコスト最適
ducphan87
1
de
32
Top clipped slide
Ruby初級者向けレッスン 50回 ─── ブロック
26 de Jul de 2014
•
0 gostou
2 gostaram
×
Seja o primeiro a gostar disto
mostrar mais
•
1,506 visualizações
visualizações
×
Vistos totais
0
No Slideshare
0
De incorporações
0
Número de incorporações
0
Baixar agora
Baixar para ler offline
Denunciar
Tecnologia
P.26 「ブロックは Proc」は間違いでした。
higaki
Seguir
Anúncio
Anúncio
Anúncio
Recomendados
Ruby初級者向けレッスン 56回 ─── ブロック
higaki
612 visualizações
•
32 slides
Ruby初級者向けレッスン KOF2015 出張版
higaki
647 visualizações
•
22 slides
Ruby初級者向けレッスン 55回 ─── 例外
higaki
466 visualizações
•
26 slides
Ruby初級者向けレッスン 54回 ─── クラス
higaki
459 visualizações
•
32 slides
Ruby初級者向けレッスン 53回 ─── Array と Hash
higaki
429 visualizações
•
32 slides
初級者向けレッスン 52回 ─── 文字列
higaki
799 visualizações
•
30 slides
Mais conteúdo relacionado
Mais de higaki
(6)
Ruby 初級者向けレッスン 49回───クラス
higaki
•
681 visualizações
Ruby初級者向けレッスン 48回 ─── Array と Hash
higaki
•
689 visualizações
Ruby初級者向けレッスン 47回 ─── 文字列
higaki
•
1.1K visualizações
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
•
4.4K visualizações
ジュンク堂書店の方から来ました
higaki
•
887 visualizações
Ruby初級者向けレッスン 45回 ─── 例外
higaki
•
1.2K visualizações
Último
(20)
GitHub と Azure でアプリケーションとインフラストラクチャの守りを固めるDevSecOps
Kazumi IWANAGA
•
6 visualizações
開発環境向けEKSのコスト最適
ducphan87
•
0 visão
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
Rakuten Group, Inc.
•
39 visualizações
Voyager: An Open-Ended Embodied Agent with Large Language Models
harmonylab
•
20 visualizações
通信プロトコルについて
iPride Co., Ltd.
•
7 visualizações
ヘッドレス化したbaserCMS5とその機能
Ryuji Egashira
•
10 visualizações
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
25 visualizações
JSONEncoderで詰まった話
とん とんぼ
•
144 visualizações
SoftwareControl.pdf
ssusercd9928
•
7 visualizações
量子論.pdf
hiro150493
•
9 visualizações
JSTQB_テストプロセスの概念モデル.pdf
akipii Oga
•
274 visualizações
CDLEハッカソン2022参加報告.pdf
SHOIWA1
•
10 visualizações
【DL輪読会】Egocentric Video Task Translation (CVPR 2023 Highlight)
Deep Learning JP
•
87 visualizações
JSTQB_テストマネジメントとレビュープロセス.pdf
akipii Oga
•
245 visualizações
DrupalをDockerで起動してみる
iPride Co., Ltd.
•
22 visualizações
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 visualizações
社内ソフトスキルを考える
infinite_loop
•
91 visualizações
TestSIP (1).pdf
DeependraSingh712859
•
2 visualizações
統計学の攻略_推測統計学の考え方.pdf
akipii Oga
•
281 visualizações
Kubernetes超入門
Takashi Suzuki
•
5 visualizações
Anúncio
Ruby初級者向けレッスン 50回 ─── ブロック
2014年7月26日 Ruby初級者向けレッスン 50回 — ブロック
— ひがき @ Ruby関西
お品書き • ブロックとは? – 繰り返し –
Enumerable • メソッドにブロックを渡す • ブロックで値を受け取る • メソッドでブロックを受け取る • ブロックに値を渡す
繰り返し a = [0,
1, 2] a.each do |i| puts i end # >> 0 # >> 1 # >> 2
繰り返し a = [0,
1, 2] a.each{|i| puts i} # >> 0 # >> 1 # >> 2
Enumerable • 繰り返しを行なうクラスのためのモジュール • クラスには
each メソッドが必要 Array.ancestors # => [Array, Enumerable, Object, Kerne Hash.ancestors # => [Hash, Enumerable, Object, Kernel
BasicObject Object Mix-in Kernel Mix-in Enumerable map select inject Array Hash each each
便利な例 a = [0,
1, 2, 3] # => [0, 1, 2, 3] a.map{|i| i * i} # => [0, 1, 4, 9] a.select{|i| i.even?} # => [0, 2] a.inject{|s, i| s + i} # => 6 a.find{|i| i.odd?} # => 1 a.all?{|i| i.even?} # => false a.any?{|i| i.even?} # => true
array.map{|i| i *
i} アプリケーション ブロック オブジェクト -生成 § ¦ ¤ ¥{|i| i * i} -map 呼出
ブロックを渡す • メソッドには、ブロックをひとつ渡せる。 • ブロックをどう使うかは、メソッド次第。 open(’hello.txt’)
# = #File:hello.txt open(’hello.txt’){|f| f.read} # = こんにちはn
ファイル入出力の例 begin f = open(’hello.txt’) f.read ensure f.close
unless f.nil? end
ブロックのない open アプリケーション オブジェクト -open -read -close ×
ブロック付き open open(’hello.txt’){|f| f.read} アプリケーション
ブロック オブジェクト § ¦ ¤ ¥{|f| f.read} -生成 -open 呼出 close ×
値を受け取る • ブロックは、値を受け取れる。 • 何を幾つ受け取れるかは、メソッド次第。
値は受け取らなくてもいい 2.times{|i| puts i} #
0 # 1 2.times{puts ’こんにちは’} # こんにちは # こんにちは
Hash の例 people =
{matz: 49, dhh: 34} # = {:matz=49, :dhh=34} people.each{|person| p person} # [:matz, 49] # [:dhh, 34]
Hash の例 (2) people
= {matz: 49, dhh: 34} people.each do |name, age| puts #{name}(#{age}) end # matz(49) # dhh(34)
each cons の例 midosuji
= [梅田, 淀屋橋, 本町, 心斎橋, なんば] midosuji.each_cons(2){|path| p path} # [梅田, 淀屋橋] # [淀屋橋, 本町] # [本町, 心斎橋] # [心斎橋, なんば]
each cons の例
(2) midosuji.each_cons(2) do |from, to| p #{from} - #{to} end # 梅田 - 淀屋橋 # 淀屋橋 - 本町 # 本町 - 心斎橋 # 心斎橋 - なんば
each cons の例
(3) a = [*0..3] # = [0, 1, 2, 3] a.each_cons(3){|i| p i} # [0, 1, 2] # [1, 2, 3] a.each_cons(3){|i, j| p [i, j]} # [0, 1] # [1, 2]
ブロックを受け取るメソッド • こんな感じで呼びたい monta{puts ’block!’} #
block! # block! # 大切なことなので
ブロックを受け取る def monta yield yield puts ’大切なことなので’ end
ブロックを受け取る (2) def monta(block) block.call block.call puts
’大切なことなので’ end
値を渡す def monta yield ’大切なことなので’ yield
’大切なことなので’ end monta{|i| puts i} # 大切なことなので # 大切なことなので
値を渡す (2) def monta(block) block.call
’大切な’, ’ことなので’ block.call [’大切な’, ’ことなので’] end monta{|i| p i} # 大切な # [大切な, ことなので]
値を渡す (3) def monta(block) block.call
’大切な’, ’ことなので’ block.call [’大切な’, ’ことなので’] end monta{|i, j| p #{i}, #{j}} # 大切な, ことなので # 大切な, ことなので
ブロックは Proc block =
Proc.new do |i, j| puts #{i}#{j} end monta(block) # 大切なことなので # 大切なことなので
演習問題 0 今日のレッスンで分からなかったこと、疑問に 思ったことをグループで話し合ってみよう。
演習問題 1 0 から
9 までの数値をもつ配列 a がある。 • 各要素を順番に表示しよう。 • 各要素を 2倍した値を持つ配列を作ろう。 • 全要素の合計値を計算しよう。 a = (0..9).to_a a # = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
演習問題 2 0 から
9 までの数値をもつ配列 a がある。 奇数の要素だけを持つ配列を作ろう。 ただし odd? メソッドは使用禁止。
演習問題 3 Enumerable#map を自作してみよう。 module
Enumerable def my_map …… end end ただし Enumerable#map と Enumerable#map! は使用禁止。
自己紹介 • 名前 (ニックネーム) •
普段の仕事・研究内容・代表作 • Ruby歴・コンピュータ歴 • 勉強会に来た目的 • などなど
参考 • 公式サイト https://www.ruby-lang.org/ • るりま http://docs.ruby-lang.org/ja/ •
解答例 https://github.com/higaki/ learn_ruby_kansai_62
Anúncio