4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

チャート式 第2回まとめ

Last updated at Posted at 2020-12-14

!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
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?