Ruby三項演算子の使用方法(?:)
Rubyの三項演算子とは何ですか?
三項演算子は3つの部分で構成されており、「三項」という言葉の由来です。これらの部分には、条件付きステートメントが含まれます &2つの可能な結果 。
つまり、ターナリを使用すると、1行のコードでコンパクトなif/else式を記述できます。
例 :
if apple_stock > 1 :eat_apple else :buy_apple end
これになることができます :
apple_stock > 1 ? :eat_apple : :buy_apple
三項演算子に感謝します!
質問…
これはどのように機能しますか?正確には、適切な構文は何ですか?
調べてみましょう。
独自のTernaryを作成するためのテンプレート
三項演算子の構文を一般化すると、「空白を埋める」種類のテンプレートが得られます。
このように見えます :
condition ? true : false
三項演算子の最初の部分は条件です 、それが本当かどうかを確認したい状態のように。
その後、疑問符(?
)が表示されます 。
これは構文の一部です!
これが、あなたが三項演算子を書いていることをRubyが知る方法です。
次へ :
条件がtrue
であることが判明した場合に、実行したいコードがあります。 、最初に考えられる結果 。
次にコロン(:
)、別の構文要素 。
最後に、条件が false
の場合に実行するコードがあります。 、2番目に考えられる結果 。
例 :
"chocolate".size > 4 ? "More than four characters" : "Less than four characters"
- 条件=>
"chocolate" .size> 4
- Trueの場合=>
"4文字を超える"
- Else =>
"4文字未満"
これらの3つの部分は、すべての3値式の構成要素です。
を忘れないでください?コード> メソッド名が疑問符で終わっている場合でも、条件と考えられる結果の間。
例 :
"".empty? ? "Yes" : "No"
これは見落としやすいので、この種のコードを書くときは注意してください。
複雑な三項演算子
三項演算子が正しく使用されていない可能性があります。
何か複雑なことをしたいときはいつでも、それは悪い考えになり始めます。
例 :
三元式の結果を変数に割り当てることができます。
a = 10 > 5 ? "yes" : "no"
大丈夫です。
しかし、考えられる結果にスペースが含まれると、さらに複雑になり始めます。
ここに例があります :
10 > 5 ? (puts "yes") : (puts "no")
ここでは括弧を使用する必要があります。
なぜですか?
そうしないと、 SyntaxError
が発生するためです。 。
これらの括弧は、このコードを理解するのを少し難しくします。 、読みやすさを損なう 三元を使用することの&スタイルの利点。
三元を使用するかどうかを選択するときは、このことに注意してください。
三項演算子と演算子の優先順位
三元式で発生するもう1つの問題は、演算子の優先順位です。
ここに例があります :
[].tap { |a| a << "ccccc".size == 0 ? "empty" : "not empty" } # [5]
"empty"
のどちらかを期待します または"notempty"
、3値の2つの可能な結果ですが、 5
を取得しました 代わりに。
何が起こっているのですか?
Rubyとほとんどのプログラミング言語は、異なるレベルの優先度で式を処理することがわかりました。
これは単純な算術でも起こります!
ご存知のように、乗算は加算と減算の前に評価されます。
同様に、Rubyでは、メソッド呼び出し( <<
& size
)は、最後の例の動作を説明する三項演算子よりも優先されます。
これは括弧で解決できます :
[].tap { |a| a << ("bbbbb".size == 0 ? "empty" : "not empty") } # ["not empty"]
三項演算子を書くときに覚えておくべきもう1つのこと!
ビデオチュートリアル
概要
Rubyの3値条件演算子について学習しました。この演算子を使用すると、状況に応じてコードを読みやすくしたり、読みにくくしたりできるコンパクトな条件ステートメントを記述できます。
今ではあなたの番です!学んだことを実践して、この知識を脳に取り入れることができます。
読んでくれてありがとう🙂
-
Ruby Grepメソッドの使用方法(例付き)
grepについて話しましょう メソッド。 この方法で何ができますか? Grepを使用して、配列や範囲などの列挙可能なオブジェクトをフィルタリングできます。 「しかし、selectはすでにそれを行っています!」 はい。ただし、grepの動作は異なり、結果も異なります。 いくつかの例を見てみましょう。 RubyGrepメソッドの例 この配列が与えられた場合: objects = [a, b, c, 1, 2, 3, nil] grepを使用して文字列のみを取得できます : objects.grep(String) # [a, b, c] 整数のみ: objects.g
-
RubyでStructとOpenStructを使用する方法
Rubyの構造体とは何ですか? 構造体は組み込みのRubyクラスであり、値オブジェクトを生成する新しいクラスを作成するために使用されます。値オブジェクトは、関連する属性を一緒に格納するために使用されます。 ここに例があります : Point 2つの座標(x &y 。 このデータはさまざまな方法で表すことができます。 いいね : 配列[10, 20] ハッシュ{ x: 10, y: 10 } オブジェクトPoint.new(10, 20) 複数のPointを使用する場合 、オブジェクトアプローチを使用することをお勧めします。 しかし… これら2つの値を一緒に格納するた