質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

761閲覧

Rubyにおける演算子の使い方について

shiba48

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/07/13 07:40

編集2020/07/13 07:43

前提・実現したいこと

Rubyにおける三項演算子の使い方がいまいち理解できません。
条件 ? 式1 : 式2 を使用して条件判断をさせたいのですが表示されません。
※if文を使わずに表示させたいです。

発生している問題・エラーメッセージ

ruby

1表示されない

該当のソースコード

ruby

1list = ["たろう", "はなこ", "じろう", "たまこ"] 2list.each do |name| 3 name =~ /たろう|じろう/ ? puts "「#{name}」は「男性」です" : puts "「#{name}」は「女性」です" 4end

試したこと

正規表現 =~ を使用し、eachで取り出した変数nameに該当文字列が含まれる場合の条件分岐を試したが表示されず。
if文に当てはめると問題なく表示されるため、演算子を複数使用していることが問題なのでしょうか?
リファレンスより、? : より =~ が優先順位が高いと記載されていましたが、併用ができないという理解でよろしいのでしょうか?

表示させたい実行結果

「たろう」は「男性」です
「はなこ」は「女性」です
「じろう」は「男性」です
「たまこ」は「女性」です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

putsひとつでいけるよね。

Ruby

1list = ["たろう", "はなこ", "じろう", "たまこ"] 2list.each do |name| 3 puts("「#{name}」は「#{name =~ /たろう|じろう/ ? '男性' : '女性'}」です") 4end

投稿2020/07/13 08:24

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiba48

2020/07/13 09:27

なるほど! 確かに分解して考えたらこのようなリファクタリングの仕方があるのですね! 勉強になります、ありがとうございます。
guest

0

ベストアンサー

カッコのないスタイルでのメソッド呼び出しは、式の途中に混ぜるとパースに失敗することがあります。

カッコをつければ、問題は解決します。

ruby

1list = ["たろう", "はなこ", "じろう", "たまこ"] 2list.each do |name| 3 name =~ /たろう|じろう/ ? puts("「#{name}」は「男性」です") : puts("「#{name}」は「女性」です") 4end

投稿2020/07/13 07:53

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/07/13 07:58

メソッド引数のカッコは、「引数を全く渡さない場合」と「式の先頭のメソッド」以外では省略しないほうがいいです。この例のようにパースに失敗したり、意図しない区切りで認識されたりすることがあります。
maisumakun

2020/07/13 07:59

> 演算子を複数使用していることが問題なのでしょうか? 関係ありません。
shiba48

2020/07/13 08:13

ご丁寧にご回答ありがとうございます! そもそもカッコをつけるという認識がありませんでした。 非常に勉強になりました、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問