回答編集履歴

3

質問に答えれてなかった部分を修正

2019/10/22 09:49

投稿

kuraudo
kuraudo

スコア137

test CHANGED
@@ -25,6 +25,10 @@
25
25
  としていますが、これは **dice関数の返り値のみに対して** putsを適用しています。
26
26
 
27
27
  なのでたしかに"もう1回"の方でputsを使っていてそっちにもputsを適用しているように感じますが実はそっちには影響していません。
28
+
29
+ なので "もう1回" の方にputsをつけないと表示されません。そして返り値を2つ連続で書こうとするとエラーになります。
30
+
31
+ (1つ目が文字列型の "もう1回", 2つ目が[1, 2, 3, 4, 5, 6].sample の値)
28
32
 
29
33
 
30
34
 
@@ -83,3 +87,27 @@
83
87
  こんな感じで関数は文字列なり数字なりの値だけ返す関数の場合は使うときにputsを使って扱いまずが
84
88
 
85
89
  関数内でputsを使っている場合(hi_puts関数)では不必要になります。
90
+
91
+
92
+
93
+ またdiceを使う前にputsを使いたくない場合、あんまり綺麗なコードではないですが
94
+
95
+
96
+
97
+ ```ruby
98
+
99
+ def dice_in_puts
100
+
101
+ result = [1, 2, 3, 4, 5, 6].sample
102
+
103
+ return puts result unless result == 1
104
+
105
+ puts "もう1回"
106
+
107
+ puts [1, 2, 3, 4, 5, 6].sample
108
+
109
+ end
110
+
111
+ ```
112
+
113
+ こんな感じで書くことができます。(なので結果としてあとからputsを書いた方がエコって感じですね。)

2

強調したい点をボールド体に

2019/10/22 09:49

投稿

kuraudo
kuraudo

スコア137

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- としていますが、これはdiceの返り値に対してputsを適用しています。
25
+ としていますが、これは **dice関数の返り値のみに対して** putsを適用しています。
26
26
 
27
27
  なのでたしかに"もう1回"の方でputsを使っていてそっちにもputsを適用しているように感じますが実はそっちには影響していません。
28
28
 

1

説明不足な点を追記

2019/10/22 09:40

投稿

kuraudo
kuraudo

スコア137

test CHANGED
@@ -25,3 +25,61 @@
25
25
  としていますが、これはdiceの返り値に対してputsを適用しています。
26
26
 
27
27
  なのでたしかに"もう1回"の方でputsを使っていてそっちにもputsを適用しているように感じますが実はそっちには影響していません。
28
+
29
+
30
+
31
+ そして、なぜ puts を diceの前に記述しているかと言うとreturnで返ってくる値(それこそ返り値)を表示したいからにあります。
32
+
33
+
34
+
35
+ ```ruby
36
+
37
+ irb(main):001:0>
38
+
39
+ irb(main):002:0> def hi
40
+
41
+ irb(main):003:1> "hoge"
42
+
43
+ irb(main):004:1> end
44
+
45
+ => :hi
46
+
47
+ irb(main):005:0>
48
+
49
+ irb(main):006:0> hi
50
+
51
+ => "hoge"
52
+
53
+ irb(main):007:0> puts hi
54
+
55
+ hoge
56
+
57
+ => nil
58
+
59
+ irb(main):008:0>
60
+
61
+ irb(main):009:0> def hi_puts
62
+
63
+ irb(main):010:1> puts "hoge"
64
+
65
+ irb(main):011:1> end
66
+
67
+ => :hi_puts
68
+
69
+ irb(main):012:0>
70
+
71
+ irb(main):013:0> hi_puts
72
+
73
+ hoge
74
+
75
+ => nil
76
+
77
+ irb(main):014:0>
78
+
79
+ ```
80
+
81
+
82
+
83
+ こんな感じで関数は文字列なり数字なりの値だけ返す関数の場合は使うときにputsを使って扱いまずが
84
+
85
+ 関数内でputsを使っている場合(hi_puts関数)では不必要になります。