Created
January 31, 2013 08:52
-
-
Save satoshin2071/4681424 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Enumerableをincludeして独自に使うときのおさらいメモ | |
Enumerableのメソッドは全てeachを用いて定義されているのでincludeしたらeachを適切に定義してやる必要がある。 | |
[1] pry(main)> class Account | |
[1] pry(main)* attr_accessor :name, :balance | |
[1] pry(main)* def initialize(name, balance) | |
[1] pry(main)* @name = name | |
[1] pry(main)* @balance = balance | |
[1] pry(main)* end | |
[1] pry(main)* | |
[1] pry(main)* def <=>(other) | |
[1] pry(main)* @balance <=> other.balance | |
[1] pry(main)* end | |
[1] pry(main)* end | |
=> nil | |
[2] pry(main)> class Portfolio | |
[2] pry(main)* include Enumerable | |
[2] pry(main)* | |
[2] pry(main)* def initialize | |
[2] pry(main)* @accounts = [] | |
[2] pry(main)* end | |
[2] pry(main)* | |
[2] pry(main)* def each(&block) | |
[2] pry(main)* @accounts.each(&block) | |
[2] pry(main)* end | |
[2] pry(main)* | |
[2] pry(main)* def add_account(account) | |
[2] pry(main)* @accounts << account | |
[2] pry(main)* end | |
[2] pry(main)* end | |
=> nil | |
[3] pry(main)> account1 = Account.new('account1',1000) | |
=> #<Account:0x1019c95f8 @balance=1000, @name="account1"> | |
[4] pry(main)> account2 = Account.new('account2',5000) | |
=> #<Account:0x1019b8780 @balance=5000, @name="account2"> | |
[5] pry(main)> account3 = Account.new('account3',3000) | |
=> #<Account:0x1019a7e80 @balance=3000, @name="account3"> | |
[6] pry(main)> account4 = Account.new('account4',4000) | |
=> #<Account:0x101997940 @balance=4000, @name="account4"> | |
[7] pry(main)> portfolio = Portfolio.new | |
=> #<Portfolio:0x1019821a8 @accounts=[]> | |
[8] pry(main)> portfolio.add_account(account1) | |
=> [#<Account:0x1019c95f8 @balance=1000, @name="account1">] | |
[9] pry(main)> portfolio.add_account(account2) | |
=> [#<Account:0x1019c95f8 @balance=1000, @name="account1">, | |
#<Account:0x1019b8780 @balance=5000, @name="account2">] | |
[10] pry(main)> portfolio.add_account(account3) | |
=> [#<Account:0x1019c95f8 @balance=1000, @name="account1">, | |
#<Account:0x1019b8780 @balance=5000, @name="account2">, | |
# #<Account:0x1019a7e80 @balance=3000, @name="account3">] | |
[11] pry(main)> portfolio.add_account(account4) | |
=> [#<Account:0x1019c95f8 @balance=1000, @name="account1">, | |
#<Account:0x1019b8780 @balance=5000, @name="account2">, | |
# #<Account:0x1019a7e80 @balance=3000, @name="account3">, | |
# #<Account:0x101997940 @balance=4000, @name="account4">] | |
portfolioが保持しているAccountインスタンスの中で@balanceの値が2000より大きいものはあるか? | |
[13] pry(main)> p portfolio.any?{|account|account.balance > 2000} | |
true | |
=> nil | |
portfolioが保持しているAccountインスタンスの@balanceの値は全て2000より大きいか? | |
[14] pry(main)> p portfolio.all?{|account|account.balance > 2000} | |
false | |
=> nil |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment