回答編集履歴

3

修正

2018/05/30 09:06

投稿

asm
asm

スコア15147

test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
  **再追記**
106
106
 
107
- Rubyはif``ではなく[if式](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#if)なので結果を返します。
107
+ Rubyはif****ではなく[if式](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#if)なので結果を返します。
108
108
 
109
109
  > if 式は、条件が成立した節(あるいは else 節)の最後に評価し た式の結果を返します。else 節がなくいずれの条件も成り立たなけれ ば nil を返します。
110
110
 

2

追記

2018/05/30 09:05

投稿

asm
asm

スコア15147

test CHANGED
@@ -99,3 +99,37 @@
99
99
 
100
100
 
101
101
  こんな感じにすることが多いですね
102
+
103
+
104
+
105
+ **再追記**
106
+
107
+ Rubyはif`文`ではなく[if式](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#if)なので結果を返します。
108
+
109
+ > if 式は、条件が成立した節(あるいは else 節)の最後に評価し た式の結果を返します。else 節がなくいずれの条件も成り立たなけれ ば nil を返します。
110
+
111
+ ```ruby
112
+
113
+ def save
114
+
115
+ event = if hoge1?
116
+
117
+ hoge!
118
+
119
+ elsif hoge2?
120
+
121
+ hoge2!
122
+
123
+ else
124
+
125
+ raise 'Unauthorized!'
126
+
127
+ end
128
+
129
+ p event
130
+
131
+ binding.pry
132
+
133
+ end
134
+
135
+ ```

1

追記

2018/05/30 09:05

投稿

asm
asm

スコア15147

test CHANGED
@@ -19,3 +19,83 @@
19
19
 
20
20
 
21
21
  どうしても、変数を経由したい場合はインスタンス変数でどうにかならないか考えます。
22
+
23
+
24
+
25
+ ---
26
+
27
+
28
+
29
+ **追記**
30
+
31
+
32
+
33
+ ```ruby
34
+
35
+ class Hoge
36
+
37
+ def save
38
+
39
+ raise 'Unauthorized!' unless hoge1?
40
+
41
+ p @event
42
+
43
+ binding.pry
44
+
45
+ end
46
+
47
+ def hoge!
48
+
49
+ @event = Eventなんちゃら
50
+
51
+ end
52
+
53
+ end
54
+
55
+
56
+
57
+ h = Hoge.new
58
+
59
+ h.hoge!
60
+
61
+ h.save
62
+
63
+ ```
64
+
65
+
66
+
67
+ ただ、これだと`save`呼び出す前に(もしくは`save`内で)`hoge!`を呼び出さないとエラーになります。
68
+
69
+ なので
70
+
71
+ ```ruby
72
+
73
+ class Hoge
74
+
75
+ def save
76
+
77
+ raise 'Unauthorized!' unless hoge1?
78
+
79
+ # @eventが未定義(もしくはnilやfalseの場合)初期化する
80
+
81
+ @event ||= hoge!
82
+
83
+ p @event
84
+
85
+ binding.pry
86
+
87
+ end
88
+
89
+ def hoge!
90
+
91
+ @event = Eventなんちゃら
92
+
93
+ end
94
+
95
+ end
96
+
97
+ ```
98
+
99
+
100
+
101
+ こんな感じにすることが多いですね