①name変数に文字列の配列代入
ruby
1names = ['Alice','Bob','Carol']
②-1users変数にcreate_usersの返り値代入
ruby
1users = User.create_users(names)
②-2 create_usersメソッド(クラスメソッド)呼び出し
・引数のnames(①)の文字列配列がを配列展開しています。
ruby
1# mapなので返り値はUserインスタンスの配列が返ります。
2def self.create_users(names)
3 names.map do |name|
4 User.new(name)
5 end
6end
②-3 配列要素の文字列を引数に、Userインスタンスの作成
ruby
1# User.new(name)したときにinitializeメソッドが呼び出される
2# このときに、引数のnameが@nameにセットされる。インスタンスは@nameを保持する
3def initialize(name)
4 @name = name
5end
現状で、以下のような動きをすると思います。
ruby
1# 出力結果
2
3 p user.name
4
5 ・name == 'Alice'
6 > 'Alice'
7 ・name == 'Bob'
8 > 'Bob'
9 ・name == 'Carol'
10 > 'Carol'
③ ユーザーインスタンスのhelloメソッド(インスタンスメソッド)を呼び出します。
ruby
1users.each do |user|
2 puts user.hello
3end
ruby
1# 出力結果
2
3> Hello,I am Alice
4> Hello,I am Bob
5> Hello,I am Carol