0
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.

railsチュートリアル第4章 メソッドの定義

Posted at

###演習
1.lengthメソッドを使って調べろ

>> a = "racecar"
=> "racecar"
>> a.length
=> 7

2.reverseメソッドを使って調べろ

>> a.reverse
=> "racecar"

3.等しいか比べろ

>> s = "racecar"
=> "racecar"
>> s == s.reverse
=> true

等しかった。

4.```puts "It's a palindrome!" if s ==s.reverse


```rb
>> puts "It's a palindrome!" if s == s.reverse
It's a palindrome!
=> nil

nilが帰ってきた。
なんで?

puts "foo"は文字列「"foo"」を副作用としてスクリーンに表示しますが、戻り値には「文字どおりの無」であるnilを返します
予想ではsと等しい時に表示させると思う。

なんかわからんけど
スクリーンに表示させると戻り値はnilが帰ってくるらしい。

###メソッドの定義
homeアクションや、リスト 4.2のfull_titleヘルパーと同じ方法でメソッドを定義することができます

>> def string_message(str = '')
>>   if str.empty?
>>     "It's an empty string!"
>>   else
>>     "The string is nonempty."
>>   end
>> end
=> :string_message
>> puts string_message("foobar")
The string is nonempty.
>> puts string_message("")
It's an empty string!
>> puts string_message
It's an empty string!

メソッドの引数を省略することも可能です

def string_message(str = '')
引数にデフォルト値を含めているからです(この例のデフォルト値は空の文字列です)
str変数に引数を渡すことも渡さないこともできます。
指定のデフォルト値が自動的に使われます。

Rubyのメソッドには「暗黙の戻り値がある」
それは
メソッド内で最後に評価された式の値が自動的に返されること

>> def string_message(the_function_argument = '')
>>   if the_function_argument.empty?
>>     "It's an empty string!"
>>   else
>>     "The string is nonempty."
>>   end
>> end
=> :string_message
>> puts string_message("")
It's an empty string!
>> puts string_message("foobar")
The string is nonempty.

2番目のreturnは実はなくても良い。
メソッド内の最後に置かれた式"The string is nonempty."は、returnキーワードがなくても暗黙で値を返すため

両方にreturnを使う方が見た目の対称性が保たれるので好ましいと言える。

####演習

>> def palindrome_tester(s)
>>   if FILL_IN
>>     puts "It's a palindrome!"
>>   else
>>     puts "It's not a palindrome."
>>   end
>> end

1.FILL_INの部分を適切なコードに置き換え、回文かどうかをチェック

>> def palindrome_tester(s)
>>   if s == s.reverse
>>     puts "It's a palindrome!"
>>   else
>>     puts "It's not a palindrome."
>>   end
>> end
=> :palindrome_tester

2.上で定義したメソッドを使って “racecar” と “onomatopoeia” が回文かどうかを確かめろ

>> puts palindrome_tester("racecar")
It's a palindrome!

=> nil
>> puts palindrome_tester("onomatopeia")
It's not a palindrome.

=> nil

3.palindrome_tester("racecar")に対してnil?メソッドを呼び出し、戻り値がnilであるかどうかを確認しろ

>> puts palindrome_tester("racecar").nil?
It's a palindrome!
true
=> nil

文字列が返されたのでnilになった。
前に文字列を表示させた時にnilが返されたことがあったのを思い出した。

0
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
0
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?