Skip to content

Instantly share code, notes, and snippets.

View TomohikoSato's full-sized avatar

tomohiko sato TomohikoSato

View GitHub Profile
@TomohikoSato
TomohikoSato / self.rb
Last active July 6, 2019 11:37
rubyのself
# https://qiita.com/creamysellotape/items/68a7203bae7296707d43#comment-29e1991a2d2263d466ef
# 「メソッド実行中は常に自分自身(メソッドが呼び出されたインスタンス)が 誰であるかという情報が保存されており、selfでその情報を取ることができる。」
# Class.new で渡されるブロックの引数はnewで生成するクラスになる https://docs.ruby-lang.org/ja/latest/method/Class/s/new.html
# トップレベルの文脈
p self #=> main
class Foo
# クラス定義の文脈
p self #=> Foo
@TomohikoSato
TomohikoSato / class_method_definition.rb
Last active July 6, 2019 11:26
クラス/メソッドの定義
# https://magazine.rubyist.net/articles/0046/0046-SingletonClassForBeginners.html
# https://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fdef.html#class_method
# クラス定義
class Hoge
def Hoge.foo
p "foo"
end
end
@TomohikoSato
TomohikoSato / 13.rb
Last active July 13, 2019 14:42
EffectiveRuby写経
# 項目13 "<=>"とComparableモジュールで比較を実装しよう
class Version
include(Comparable) # <=>が定義されていれば、 <, <=, =>, > といったComparableで定義されたメソッドが利用可能になる
attr_reader :major, :minor, :patch
alias_method(:eql?, :==) # Hashのキーの同一性にeql?とhashを使う
def initialize(version)
@major, @minor, @patch = version.split('.').map(&:to_i)
end
@TomohikoSato
TomohikoSato / HogeFragment.kt
Last active April 4, 2019 08:58
画面遷移用DSL
class HogeFragment: Fragment, Screen {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
hogeButton.setOnClickListener { navigate(Event.HogeOkClicked()) }
}
}
# RxJava ハンズオン
---
# RxJavaとは
Reactive Extension for Java
https://github.com/ReactiveX/RxJava (Star 20000 以上)
イベントを作り、こねこねして、購読する