いつもお世話になっております。
下記のコードのようにeachとifを組み合わせて書いた場合、内包されているifが全てfalseのみ動くコードを書きたいと考えております。
arry = ["apple","pineapple","orange"] arry.each {|fruit| if fruit == "apple" #true else p "false" end }
私のやり方では、eachで繰り返した数だけ、false時に実行されたいプログラムが動いてしまいます。
ご指摘お願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
こういう場合は、.none?
というメソッドがあります。
ruby
1arry = ["apple","pineapple","orange"] 2if arry.none?{ |a| a == "apple" } 3 # 全部falseの場合の処理 4end
投稿2017/02/09 12:05
編集2017/02/09 12:06総合スコア145183
0
ruby
1$ irb 2irb(main):001:0> arry = ["apple","pineapple","orange"] 3=> ["apple", "pineapple", "orange"] 4 5irb(main):002:0> p 'no exist apple' if arry.select{ |a| a == 'apple' }.empty? 6=> nil 7 8irb(main):003:0> p 'no exist banana' if arry.select{ |a| a == 'banana' }.empty? 9"no exist banana" 10=> "no exist banana"
参考情報
- 便利な組み込みクラスのメソッド達(Enumerable編) http://qiita.com/kidach1/items/a00558cfb0a6a3e23f4b
...
all?, none?, any?, one?, grep, detect, select, ...
...
投稿2017/02/09 14:40
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Ruby
1arry = ["apple","pineapple","orange"] 2count = 0 3arry.each {|fruit| 4 if fruit == "apple" 5 #true 6 else 7 if count == 0 8 p "false" 9 count = 1 10 end 11 end 12}
Ruby
1arry = ["apple","pineapple","orange"] 2count = 0 3arry.each {|fruit| 4 unless fruit == "apple" 5 if count == 0 6 p "false" 7 count = 1 8 end 9 end 10}
質問を、「1度だけ"false"を表示するようにしたい」ということだと
理解してそうなるような方法を考えてみました。
投稿2017/02/09 10:38
編集2017/02/09 11:01退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/02/09 13:05
2017/02/09 13:19
退会済みユーザー
2017/02/09 13:33 編集
2017/02/10 09:54
退会済みユーザー
2017/02/10 10:37 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。