!Mac OS X-10.15.7 !ruby-2.7.1p83
今回の問題
受け取った引数ARGV[0]をnameという変数(variable)に代入してそれを打ち出すcodeを書きなさい.
> ruby name_variable.rb Rudy
Rudy
簡単な解説
Rubyには型の宣言は必要が無い.シンプルにイコールを使えば良い.
name = 'Rudy'
詳しい解法
> ruby name_variable.rb Rudy
とした際,
ruby: No such file or directory -- name_variable.rb (LoadError)
そのようなファイルはないと返ってくる.emacs を起動させて
> emacs name_variable.rb
以下のようにコードを打ち込み,C-x→C-sで保存.
p "Rudy"
すると,先ほどのエラーが消えて”Ruby”と表示される.
> ruby name_variable.rb Rudy
"Rudy"
類題
- nameに代入してRudyと打ち出すようにrefactoringしなさい.
- ARGV[0]を受け取って,自分の名前を返すようにrefactoringしなさい.
※refactoring:プログラムの外部からみた動作を変えずにソースコードの内部構造を整理すること.
お題
> ruby hello_method.rb Rudy
Hello Rudy.
と返すhello methodを作れ.
解説
Rubyではfunctionやprocedureなどのまとまりはmethodを定義(definition)することになる.methodは0個以上の引数を取ることができる.
def hello(name)
p name
end
解法
emacsでhello_method.rbを編集する.
> emacs hello_method.rb
今回はmethodの中身ではなく呼び出す方から考える.
hello(name)
とすると,以下のようなエラーメッセージが表示される.
> ruby hello_method.rb Rudy
hello_method.rb:1:in `<main>': undefined local variable or method `name' for main:Object (NameError)
nameが未定義であるという意味のエラー.そこで,nameにARGV[0]を代入して実行すると.
name = ARGV[0]
hello(name)
次のようなエラーメッセージが表示される.
> ruby hello_method.rb Rudy
hello_method.rb:2:in `<main>': undefined method `hello' for main:Object (NoMethodError)
Helloのmethodがない.つまり,
def hello(name)
p name
end
name = ARGV[0]
hello(name)
とすればよい.
- source ~/grad_members_20f/members/szksjm/qiita_post/R2.org