Enviar pesquisa
Carregar
Metaprogramming
•
0 gostou
•
829 visualizações
Akura Pi
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 13
Baixar agora
Baixar para ler offline
Recomendados
Scala入門
Scala入門
Yoshifumi Takeshima
List demo3
List demo3
sunzhou241
Currying
Currying
Akura Pi
List demo2
List demo2
sunzhou241
Presentación1
Presentación1
Angelica Lorena Garcia Acuna
そもそもFloatとは
そもそもFloatとは
Akura Pi
Ns user defaults
Ns user defaults
Akura Pi
Exp fisica
Exp fisica
Angelica Lorena Garcia Acuna
Recomendados
Scala入門
Scala入門
Yoshifumi Takeshima
List demo3
List demo3
sunzhou241
Currying
Currying
Akura Pi
List demo2
List demo2
sunzhou241
Presentación1
Presentación1
Angelica Lorena Garcia Acuna
そもそもFloatとは
そもそもFloatとは
Akura Pi
Ns user defaults
Ns user defaults
Akura Pi
Exp fisica
Exp fisica
Angelica Lorena Garcia Acuna
List demo1
List demo1
sunzhou241
Marine national parks
Marine national parks
Penbank
Cio如何制定与企业战略匹配的it战略规划
Cio如何制定与企业战略匹配的it战略规划
sunzhou241
TableViewAgent
TableViewAgent
Akura Pi
Water Catchments
Water Catchments
Penbank
Marine national parks
Marine national parks
Penbank
组织结构设计的流程及方法
组织结构设计的流程及方法
sunzhou241
ナイーブツリーの入れ子集合
ナイーブツリーの入れ子集合
Akura Pi
フィア・オブ・ジ・アンノウン
フィア・オブ・ジ・アンノウン
Akura Pi
W class
W class
Penbank
Mvcのすすめ
Mvcのすすめ
Akura Pi
ファントムファイル
ファントムファイル
Akura Pi
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
Xtext And Grails20091218
Xtext And Grails20091218
Akira Tanaka
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
MicroAd, Inc.(Engineer)
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
Web制作勉強会 #2
Web制作勉強会 #2
Moto Yan
Jubatusでマルウェア分類
Jubatusでマルウェア分類
Shuzo Kashihara
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
Koichiro Ohba
named_scope more detail
named_scope more detail
Kyosuke MOROHASHI
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Yuki Ishikawa
Mais conteúdo relacionado
Destaque
List demo1
List demo1
sunzhou241
Marine national parks
Marine national parks
Penbank
Cio如何制定与企业战略匹配的it战略规划
Cio如何制定与企业战略匹配的it战略规划
sunzhou241
TableViewAgent
TableViewAgent
Akura Pi
Water Catchments
Water Catchments
Penbank
Marine national parks
Marine national parks
Penbank
组织结构设计的流程及方法
组织结构设计的流程及方法
sunzhou241
ナイーブツリーの入れ子集合
ナイーブツリーの入れ子集合
Akura Pi
フィア・オブ・ジ・アンノウン
フィア・オブ・ジ・アンノウン
Akura Pi
W class
W class
Penbank
Mvcのすすめ
Mvcのすすめ
Akura Pi
ファントムファイル
ファントムファイル
Akura Pi
Destaque
(12)
List demo1
List demo1
Marine national parks
Marine national parks
Cio如何制定与企业战略匹配的it战略规划
Cio如何制定与企业战略匹配的it战略规划
TableViewAgent
TableViewAgent
Water Catchments
Water Catchments
Marine national parks
Marine national parks
组织结构设计的流程及方法
组织结构设计的流程及方法
ナイーブツリーの入れ子集合
ナイーブツリーの入れ子集合
フィア・オブ・ジ・アンノウン
フィア・オブ・ジ・アンノウン
W class
W class
Mvcのすすめ
Mvcのすすめ
ファントムファイル
ファントムファイル
Semelhante a Metaprogramming
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
Xtext And Grails20091218
Xtext And Grails20091218
Akira Tanaka
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
MicroAd, Inc.(Engineer)
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
Atushi Sugiyama
Web制作勉強会 #2
Web制作勉強会 #2
Moto Yan
Jubatusでマルウェア分類
Jubatusでマルウェア分類
Shuzo Kashihara
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
Koichiro Ohba
named_scope more detail
named_scope more detail
Kyosuke MOROHASHI
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
Yuki Ishikawa
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming
Yuichi Hasegawa
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
Nobukazu Hanada
APA01 2015513
APA01 2015513
Wataru Shiraishi
APA01 2015513 1
APA01 2015513 1
Wataru Shiraishi
Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉
Tomoharu ASAMI
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Tomoharu ASAMI
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
Kenji Shirane
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
Kenichi Sonoda
Semelhante a Metaprogramming
(20)
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Xtext And Grails20091218
Xtext And Grails20091218
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
Web制作勉強会 #2
Web制作勉強会 #2
Jubatusでマルウェア分類
Jubatusでマルウェア分類
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
named_scope more detail
named_scope more detail
運用で爆発四散しないためのメタプログラミングとの付き合い方
運用で爆発四散しないためのメタプログラミングとの付き合い方
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
APA01 2015513
APA01 2015513
APA01 2015513 1
APA01 2015513 1
Object-Functional Analysis and Design and Programming温泉
Object-Functional Analysis and Design and Programming温泉
オブジェクト指向開発におけるObject-Functional Programming
オブジェクト指向開発におけるObject-Functional Programming
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
CMSMix Sapporo vol.3 (Drupal の回)
CMSMix Sapporo vol.3 (Drupal の回)
Xcode4 project template (slide)
Xcode4 project template (slide)
MLflowで学ぶMLOpsことはじめ
MLflowで学ぶMLOpsことはじめ
Metaprogramming
1.
Metaprogramming @akuraru
2.
自己紹介 • Scalaが好き • Objective-Cは生成するもの •
こわくない @akuraru
3.
メタプログラミング
4.
メタプログラミング • プログラミング技法の一種で、ロジックを直接コ ーディングするのではなく、あるパターンをもっ たロジックを生成する高位ロジックによってプロ グラミングを行う方法、またその高位ロジックを 定義する方法のこと。主に対象言語に埋め込まれ たマクロ言語によって行われる。
5.
メタプログラミング • クラスやメソッドを生成するロジックの事 • Objective-Cには実行時に行うことができる •
今回はコンパイル時にメソッドを増やす カテゴリの話
6.
カテゴリ • コンパイル時に既存のクラスにメソッ ドを追加、上書きできる機能 • 例 •
NSDate-Escort、MagicalRecord
7.
書き方 @interface NSDate (Escort) -
(BOOL)isToday; @end @implementation NSDate (Escort) - (BOOL)isToday { return [self isEqualToDateIgnoringTime:[NSDate date]]; } @end 参考:https://github.com/azu/NSDate-Escort
8.
実装 • コンパイル時に既存のクラスにメソッ ドを追加、上書きしている • ヘッダーをインポートしなくても実行 できる
9.
良いところ • 手軽 • ファイル分けができる •
テストするとき便利
10.
問題 • 同じクラスに同じメソッドを別のカテ ゴリで追加した場合、どちらかが適用 される • 実装ファイルがなくてもコンパイルエ ラーにならない •
責任過剰になりがち
11.
カテゴリを用いていい場合 • 複数クラスにメソッドを追加したい • それが自然と思える場合
12.
解決法 • 継承 • Static
Classを作る
13.
まとめ • 簡単に既存のクラスにメソッドを追加 できます • 何でもかんでもカテゴリで解決しない
Baixar agora